今天在閒逛CSDN論壇時,看到一位博主寫的一篇關於《Spring中IOC的Annotation的實現》的文章, 因而點擊進去看了下, 發如今說明中對Spring配置文件中的有些配置節點模凌兩可,表述的存在問題,因而本身在Demo中實現並實際操做了下,再次作個筆錄。html
咱們通常在含有Spring的項目中,可能會看到配置項中包含這個配置節點<context:annotation-config>,這是一條向Spring容器中註冊spring
AutowiredAnnotationBeanPostProcessorui
CommonAnnotationBeanPostProcessorspa
PersistenceAnnotationBeanPostProcessorcode
RequiredAnnotationBeanPostProcessor component
這4個BeanPostProcessor.註冊這4個BeanPostProcessor的做用,就是爲了你的系統可以識別相應的註解。htm
那麼那些註釋依賴這些Bean呢。 blog
若是想使用@ Resource 、@ PostConstruct、@ PreDestroy等註解就必須聲明CommonAnnotationBeanPostProcessor。
若是想使用@PersistenceContext註解,就必須聲明PersistenceAnnotationBeanPostProcessor的Bean。
若是想使用@Autowired註解,那麼就必須事先在 Spring 容器中聲明 AutowiredAnnotationBeanPostProcessor Bean。
若是想使用 @Required的註解,就必須聲明RequiredAnnotationBeanPostProcessor的Bean。rem
一樣,傳統的聲明方式以下: rpc
<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/> 移除了。