关于<context:annotation-config/>

<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 。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值