<context:component-scan base-package=""> <context:annotation-config

(2012-11-16 23:09:15)

标签:

it

分类: spring
  1. <</SPAN>context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,
  2. 同时还启用了注释驱动自动注入的功能
  3. ( 即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor ),
  4. 因此当使用 <</SPAN>context:component-scan/> 后,就可以将 <</SPAN>context:annotation-config/>移除了。
  5. <</SPAN>context:component-scan/> 的 base-package 属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理。
  6. 作用就是所有的 hibernate 配置都不用在 hibernate.cfg.xml 里配置了,也不用一大堆的像Employee.hbm.xml,Person.hbm.xml。

(一下是详解)

Spring2.5中使用注解装配属性 可在Java代码中使用@Resource或者@Autowired注解进行装配,但需在XML中配置以下信息 xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" 然后显式的配置<context:annotation-config/> 该配置隐式注册了多个对注解进行解析的处理器,如下列举 AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor PersistenceAnnotationBeanPostProcessor RequiredAnnotationBeanPostProcessor 其实,注解本身做不了任何事情,和XML一样,只起到配置的作用,主要在于背后强大的处理器
另外,比较建议使用@Resource注解而不要使用@Autowired注解 因为@Autowired注解是Spring提供的,而@Resource注解是J2EE提供的 在JDK6中就已经包含@Resource注解了,所以它没有跟Spring紧密耦合 并且在使用Spring时,若使用了JSR-250中的注解,如@Resource//@PostConstruct//@PreDestroy 那么还需要Spring安装目录中的SPRING_HOME//lib//j2ee//common-annotations.jar包的支持 这里面的@Resource注解就是在SPRING_HOME//lib//j2ee//common-annotations.jar中的

@Resource注解 @Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上 @Resource默认按名称装配,名称可以通过name属性指定。当找不到与名称匹配的bean时,才会按类型装配 若注解标注在字段上且未指定name属性,则默认取字段名作为bean名称寻找依赖对象 若注解标注在setter上且未指定name属性,则默认取属性名作为bean名称寻找依赖对象 如果没有指定name属性,并且按照默认的名称仍找不到依赖对象时,它就会按类型匹配 但只要指定了name属性,就只能按名称装配了

@Autowired注解 @Autowired默认是按类型装配对象的,默认情况下它要求依赖对象必须存在 如果允许null值,可以设置它的required属性为FALSE,如@Autowired(required=false) 若想要按名称装配,可以结合@Qualifier注解一起使用,如@Autowired(required=false) @Qualifier("personDaoBean")


Spring2.5的组件自动扫描 在一个稍大的项目中通常会有上百个组件,如果都使用XML的bean定义来配置组件的话 显然会增加配置文件的体积,查找及维护也不方便 而Spring2.5就为我们引入了组件自动扫描机制 它可以在classpath下寻找标注了@Service、@Repository、@Controller、@Component注解的类 并把这些类纳入Spring容器中管理,它的作用和在XML中使用bean节点配置组件是一样的 使用自动扫描机制,则需配置启动自动扫描 其中base-package指定需要扫描的包,它会扫描指定包中的类和子包里面类 @Service用于标注业务层组件 @Repository用于标注数据访问组件,即DAO组件 @Controller用于标注控制层组件,如Struts中的Action @Component泛指组件,当组件不要好归类时,可以使用这个注解进行标注

1、可以使用诸如@Service("personDao")修改bean名称,而它默认的是将首字母小写的类名作为名称 2、若要更改作用域的话,可以使用@Scope("prototype")注解来修改作用域 3、若想让实例化之后去执行初始化方法,可以使用@PostConstruct标注在方法上 4、同样@PreDestroy注解标注在方法上,可以用来指定销毁时执行的方法 这里的@PostConstruct是EJB3里面用来初始化bean的注解,它也不是Spring中的注解 并且的背后注册了很多用于解析注解的处理器 其中就包括了配置项里面的注解所使用的处理器 所以配置了之后便无需再配置

<context:component-scan base-package=""> 与 <context:annotation-config 区别的更多相关文章

  1. button与input[type=”button”]的区别

    button与input[type="button"]的区别 特别感谢 @守护晴天 ,指出了博客中不细致不严谨的地方,也让我学到了更多,更多是觉得抱歉,由于自己的不细致可能误导了一 ...

  2. 关于<button> 没写 type='button' 导致点击时提交以及<button>和<input type="button">的区别

    这是我的第一篇博客,如果写的不好,请见谅 这是一个关于button按钮一个小问题 最近刚开学跟着老师一起写代码,在模仿JAVA web程序设计(慕课版) P61页第三章 Ajax处理XML的代码中发现 ...

  3. <button>和<input type="button"> 的区别

    <button>标签 定义和用法 <button> 标签定义一个按钮. 在 button 元素内部,您可以放置内容,比如文本或图像.这是该元素与使用 input 元素创建的按钮 ...

  4. <button>与<input type="button"> 的区别

    <button> button按钮点击会刷新整个页面 <input type="button">  不会刷新整个页面 本文为本人用来记录自己做的一些东西,如 ...

  5. <button>与<input type="button">的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  6. 解析<button>和<input type="button"> 的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  7. <button>与<input type="button">

    在做form表单,点击按钮随机生成两串密钥的时候 1.用第一种按钮的时候,会出现刷新form表单的现象.会把创建密钥前面的输入框中的字消失.虽然能生成密钥1和密钥2,但是会闪一下,随即消失.几个输入框 ...

  8. 解析button和input type=”button”的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  9. 【转】解析<button>和<input type="button"> 的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  10. button和input type=button的区别及注意事项

    <button>标签 定义和用法 <button>标签定义一个按钮. 在button元素内部,您可以放置内容,比如文本或图像.这是该元素与使用input元素创建的按钮之间的不同 ...

随机推荐

  1. 一道值得思考的fork()面试题

    程序如下,判断输出多少个'_' ./a.out int main(){ ; i < ; ++i){ fork(); printf("_"); } } 熟悉fork的话,这里很 ...

  2. 更新Linux服务器时间

    1.修改系统时区(不修改的话,你同步时间会发现总是不对) ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime --这里我修改为了上海 2.安 ...

  3. eclipse 配置tomcat运行环境

    eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上 1.打开Eclipse,单击“Window”菜单,选择下方的“Preferences”. 2.单击“Server”选项, ...

  4. python对齐输出

    这个问题烦恼了挺久,一般情况下我都是用\t解决,但其实这样的办法并不是很nice,然后今天在写一个demo的时候实在看不下去,就百度科普了一波,确实是有比较nice的解决方案. 像这样: 令人十分难受 ...

  5. mysql存储过程简单用法

    show procedure status 查看所有存储过程 <!--  简单存储过程  --> 先将结束符改成// delimiter // create procedure query ...

  6. CSS三角形/气泡的实现原理及应用

    记得第一次面试,面试官问如何用css实现一个不规则三角形?好叭 ·-·,触及到知识盲区了,手动叹气(╥﹏╥),好在别的回答的还好,没挂

  7. Python如何用virtualenv搭建虚拟环境

    虚拟环境的搭建 优点 1.使不同应用开发环境相互独立 2.环境升级不影响其他应用,也不会影响全局的python环境 3.防止出现包管理混乱及包版本冲突 windows 安装 # 建议使用pip3安装到 ...

  8. AC自动机(初步学习)

    一开始讲AC自动机就是在字典树上做一个KMP,吓得我感觉好难,不过了解了以后,感觉也就是有点难度,不吓人. 它只是在字典树上用了KMP的思想 典型问题:给n个模式串和一个文本串,问有多少个模式串在文本 ...

  9. dijskra算法(求正权图中最短路)

    思想:每次找到离原点最近的顶点,以这个点为中心扩展松弛,更新其余点到原点的最短路径. 注意:if(e[u][v]>x)e[u][v]=x; book[ ]数组标记最短路程的顶点集合 #inclu ...

  10. CentOS7通过wget下载文件到指定目录

    查看自己的CentOS7系统有没有安装wget: [duanyongchun@192 3DUnetCNN]$ rpm -qa|grep wget 已安装提示: #已安装提示:wget-1.14-18. ...