<context:annotation-config>:用于激活那些已经在spring容器里注册过的bean上面的注解
显式地向 Spring 容器注册
AutowiredAnnotationBeanPostProcessor、
CommonAnnotationBeanPostProcessor、
PersistenceAnnotationBeanPostProcessor 、
RequiredAnnotationBeanPostProcessor 这 4 个BeanPostProcessor。
如果想使用@Resource、@PostConstruct、@PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor。
如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。
如果想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。
如果想使用@Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。
<context:component-scan>:除了具有<context:annotation-config>的功能之外,还具有自动将带有@component,@service,@Repository等注解的对象注册到spring容器中的功能。
<context:annotation-config />和 <context:component-scan>同时存在的时候,前者会被忽略。因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。
参考文章: