Spring IoC之

<context:annotation-config/>

在基於主機方式配置Spring時,Spring配置文件applicationContext.xml,你可能會見<context:annotation-config/>這樣一條配置,它的做用是隱式的向Spring容器註冊spring

  • AutowiredAnnotationBeanPostProcessorapp

  • CommonAnnotationBeanPostProcessorui

  • PersistenceAnnotationBeanPostProcessorspa

  • RequiredAnnotationBeanPostProcessor code

這4個BeanPostProcessor.註冊這4個bean處理器主要的做用是爲了你的系統可以識別相應的註解。   component

例如:xml

     若是想使用@Autowired註解,須要在Spring容器中聲明AutowiredAnnotationBeanPostProcessor Bean。傳統的聲明方式以下:                 遞歸

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

    若是想使用@PersistenceContext註解,須要在Spring容器中聲明PersistenceAnnotationBeanPostProcessor Bean。 傳統的聲明以下:               it

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

   若是想使用@Required註解,須要在Spring容器中聲明RequiredAnnotationBeanPostProcessor Bean。傳統聲明方式以下:             io

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

    若是想使用@Resource、@ PostConstruct、@ PreDestroy等註解就要聲明CommonAnnotationBeanPostProcessor。 傳統申明方式以下:

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

       因此,若是按照傳統聲明一條一條去聲明註解Bean,就會顯得十分繁瑣。所以若是在Spring的配置文件中事先加上<context:annotation-config/>這樣一條配置的話,那麼全部註解的傳統聲明就能夠被  忽略,即不用在寫傳統的聲明,Spring會自動完成聲明。

<context:component-scan/> 

      <context:component-scan/>的做用是讓Bean定義註解工做起來,也就是上述傳統聲明方式。 它的base-package屬性指定了須要掃描的類包,類包及其遞歸子包中全部的類都會被處理。

        值得注意的是<context:component-scan/>不但啓用了對類包進行掃描以實施註釋驅動 Bean 定義的功能,同時還啓用了註釋驅動自動注入的功能(即還隱式地在內部註冊了 AutowiredAnnotationBeanPostProcessor 和  CommonAnnotationBeanPostProcessor),所以當使用  <context:component-scan/> 後,就能夠將 <context:annotation-config/> 移除了(若是不使用PersistenceContext和Required註解的話)。

相關文章
相關標籤/搜索