<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. jdbc连接数据库三种方式

    ---恢复内容开始--- 第一种: public class Demo1 { //连接数据库的URL private String url = "jdbc:mysql://localhost ...

  2. 学习笔记----C语言的面向对象

    2020-03-26    21:27:17 面向对象的编程语言都有一个类的概念,像Java.python等.类是对特定数据的特定操作的集合体.它包含两个范畴:数据和操作.C语言是没有类的概念的,但是 ...

  3. Js的new运算符

    new运算符 在JavaScript中,new是一个语法糖,可以简化代码的编写,可以批量创建对象实例. 语法糖Syntactic sugar,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影 ...

  4. 微信小程序开发-小程序之间的跳转

    前几天开发微信小程序,其中有个需要联动宣传的业务,就是正在开发的小程序跳转到别的小程序去, 然后去看了下大家的做法与看法,总结下这小程序跳转之间应该注意到的几个问题 首先是跳转的方法, https:/ ...

  5. 性能测试从零开始-LoadRunner入门

    写在前面 又到了公司每月的读书会,经过上个月的试运行后,公司把读书会纳入每月的绩效考核中,听到这个消息,当时我的内心是崩溃的,不过从另一方面来讲,对于我来说也一件好事儿,这样可以督促自己养成读书的习惯 ...

  6. 洛谷 P1891 疯狂LCM 题解

    原题链接 享受推式子的乐趣吧 数论真有趣! 庆祝:数论紫题第 \(3\) 道. \[\sum_{i=1}^n \operatorname{lcm}(i,n) \] \[= \sum_{i=1}^n \ ...

  7. TensorFlow 趣题

    checkpoint 文件夹 Tensorflow训练后的模型可以保存checkpoint文件,checkpoint文件是结构与权重分离的四个文件,便于训练. 1)checkpoint 文件 保存断点 ...

  8. Range Module

    2019-09-21 18:54:16 715. Range Module 问题描述: 问题求解: 用线段树解决了. class RangeModule { Node root; class Node ...

  9. 结合生活,剖析《生产者消费者模型》-java多线程(一)

    博客园的园友们好,看博客园上各位大佬的文章,已陪伴了我程序员职业的三年, 如今自己同样希望能把自己从小白到菜鸟的成长过程分享给大家.不定期更新!!! 首先我本人智商不高,理解问题十分吃力,完全不属于天 ...

  10. 一文总结数据科学家常用的Python库(上)

    概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...