<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. 一明单词本持续更新ing...

    introductionshuffingdeployspecifyingreliableclusters programming scalemachinesdeliveringsubmarineadd ...

  2. [BJDCTF 2nd]fake google

    [BJDCTF 2nd]fake google 进入页面: 试了几下发现输入xxx,一般会按的格式显示, P3's girlfirend is : xxxxx 然后猜测会不会执行代码,发现可以执行 & ...

  3. Servlet(一)----快速入门

    ## Servlet:server applet *  概念:运行在服务端的小程序 *  servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则. *  将来我们自定义一 ...

  4. Mac下 eclipse target runtime com.genuitec.runtime 解决方法

    Mac下 eclipse target runtime com.genuitec.runtime 解决方法 解决步骤如下: 首先是找到工程项目一个名叫.settings的文件夹,里面有个叫 org.e ...

  5. 快速排序-无序数组K小元素

    13:07:382020-03-10 11:16:13 问题描述: 找到一个无序数组中第K小的数 样例 1: 输入: [3, 4, 1, 2, 5], k = 3 输出: 3 样例 2: 输入: [1 ...

  6. Java集合工具类使用的一些坑,Arrays.asList()、Collection.toArray()、foreach

    Arrays.asList() 使用指南 最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:Java Array to List Examples 感觉挺不错的,但是还不是特 ...

  7. PyTorch专栏(五):迁移学习

    专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60分钟入门 PyTorch入门 PyTorch自动微分 PyTorch神经网络 P ...

  8. Nginx Configure

    1.主配置/etc/nginx.conf #/etc/nginx/nginx.conf user nginx; worker_processes auto; error_log /var/log/ng ...

  9. zookeeper java代码实现master 选举

    1,master选举使用场景及结构 现在很多时候我们的服务需要7*24小时工作,假如一台机器挂了,我们希望能有其它机器顶替它继续工作.此类问题现在多采用master-salve模式,也就是常说的主从模 ...

  10. LLVM 编码规范 - 中文翻译

    LLVM 编码规范 导论 语言.库和标准 C++ 标准版本 C++ 标准库 Go 代码准则 机械的代码问题 代码格式化 注释 头文件 类概述 method information 注释格式化 使用Do ...