context:annotation-config、context:component-scan

以前看文章說context:component-scan能夠替代context:annotation-config,可是一直不知道爲何.最近查閱資料才知道爲何,作一個總結。ui

首先context:annotation-config能夠使四類註解生效,緣由是隱式註冊這四個bean.net

1.@autowired,須要聲明 AutowiredAnnotationBeanPostProcessor這個Beancomponent

2. @Resource 、@PostConstruct、@PreDestroy等,須要聲明CommonAnnotationBeanPostProcessor這個Bean對象

3. @PersistenceContext,須要聲明PersistenceAnnotationBeanPostProcessor這個Beanget

4. @Required的註解,須要聲明RequiredAnnotationBeanPostProcessor這個Beanit

可是有一個問題,若是一個類沒有註冊,那麼@autowired是不會幫助註冊,那麼就得不到你須要用到的實例.io

這時候,須要引入context:component-scan.class

首先能支持context:annotation-config所支持的註解,其次還支持@component、@Repository、@controller、@RestController、@ControllerAdvice、@Configuration。sso

最最重要的是掃描base-package,將掃描到的對象註冊對應的bean.總結

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息