概述
<context:annotation-config/>
<context:component-scan base-package=”xx.xx”annotation-config=true/>
最近有两个配置项有点疑惑,特在网上查了些解释
<context:annotation-config/>的作用是向Spring容器注册以下四个BeanPostProcessor:
- AutowiredAnnotationBeanPostProcessor
- CommonAnnotationBeanPostProcessor
- PersistenceAnnotationBeanPostProcessor
- RequiredAnnotationBeanPostProcessor
以上BeanPostProcessor作用如下:
1、如果想使用@Autowired注解,那么就必须事先在 Spring 容器中声明
AutowiredAnnotationBeanPostProcessor Bean。
传统声明方式如下:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
2、如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor Bean。
传统配置方式:
<bean class="org.springframework.beans.factory.annotation.CommondAnnotationBeanPostprocessor"/>
3、如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。
传统配置方式:
<bean class="org.springframework.beans.factory.annotation.PersistenceAnnotationBeanPostProcessor"/>
4、如果想使用@Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。
传统配置方式:
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
所以<context:annotation-config/>作用就是可以自动注入上述的Bean
而对于<context:component-scan base-package=”xx.xx”/>也包含了自动注入上述Bean的功能,
并且<context:component-scan base-package=”xx.xx”annotation-config=true/>功能一样,原因是annotation-config=true为默认值
所以<context:annotation-config/> 可以省略。
如果两者都进行了配置,则只有前者有效。
简单点说就是:
<context:annotation-config>
是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通
过package sanning的方式)上面的注解。
<context:component-scan>除了具有
<context:annotation-config>的功能之外,
<context:component-scan>
还可以在指定的package下扫描以及注册javabean 。
最后
以上就是震动哑铃为你收集整理的关于
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复