以前看文章說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.總結