<context:annotation-config/>、<context:component-scan/>

劍握在手發表於2015-09-08

在基於主機方式配置Spring的配置檔案中,你可能會見到<context:annotation-config/>這樣一條配置,他的作用是式地向 Spring 容器註冊

AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、

PersistenceAnnotationBeanPostProcessor 以及 RequiredAnnotationBeanPostProcessor 這 4 個BeanPostProcessor。

註冊這4個 BeanPostProcessor的作用,就是為了你的系統能夠識別相應的註解。

例如:

如果你想使用@Autowired註解,那麼就必須事先在 Spring 容器中宣告 AutowiredAnnotationBeanPostProcessor Bean。傳統宣告方式如下

<bean class="org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor "/> 

如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等註解就必須宣告CommonAnnotationBeanPostProcessor

如果想使用@PersistenceContext註解,就必須宣告PersistenceAnnotationBeanPostProcessor的Bean。

如果想使用 @Required的註解,就必須宣告RequiredAnnotationBeanPostProcessor的Bean。同樣,傳統的宣告方式如下:

<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/> 

一般來說,這些註解我們還是比較常用,尤其是Antowired的註解,在自動注入的時候更是經常使用,所以如果總是需要按照傳統的方式一條一條配置顯得有些繁瑣和沒有必要,於是spring給我們提供<context:annotation-config/>的簡化配置方式,自動幫你完成宣告。

   不過,呵呵,我們使用註解一般都會配置掃描包路徑選項

<context:component-scan base-package=”XX.XX”/> 

    該配置項其實也包含了自動注入上述processor的功能,因此當使用 <context:component-scan/> 後,就可以將 <context:annotation-config/> 移除了。

 

以上內容轉自:

 

另外:

  <context:annotation-config/>配置後應該如何配置批量在spring註冊bean待完善。

相關文章