我們一般在含有Spring的項目中,可能會看到配置項中包含這個配置節點<context:annotation-config>,這是一條向Spring容器中注冊
AutowiredAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor
RequiredAnnotationBeanPostProcessor
這4個BeanPostProcessor.注冊這4個BeanPostProcessor的作用,就是為了你的系統能夠識別相應的注解。
那么那些注釋依賴這些Bean呢。
如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必須聲明CommonAnnotationBeanPostProcessor。
如果想使用@PersistenceContext注解,就必須聲明PersistenceAnnotationBeanPostProcessor的Bean。
如果想使用@Autowired注解,那么就必須事先在 Spring 容器中聲明 AutowiredAnnotationBeanPostProcessor Bean。
如果想使用 @Required的注解,就必須聲明RequiredAnnotationBeanPostProcessor的Bean。
同樣,傳統的聲明方式如下:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/>
但是,就一般而言,這些注解我們是經常使用,比如Antowired,Resuource等注解,如果總是按照傳統的方式一條一條的配置,感覺比較繁瑣和機械。於是Spring給我們提供了<context:annotation-config/>的簡化的配置方式,自動幫助你完成聲明,並且還自動搜索@Component , @Controller , @Service , @Repository等標注的類。
<context:component-scan base-package="com.**.impl"/>
因此當使用 <context:component-scan/> 后,就可以將 <context:annotation-config/> 移除了。
