在spring 中<context:component-scan/>作用就是帮我们自动装配Bean,变处理好依赖关系。
首先 <context:component-scan/>是属于CustomElement,后来spring扩展补充的由ContextNamespaceHandler来解析命名空间然后由ClassPathBeanDefinitionScanner来扫描类路径来加载Bean。
然后会加载相应的BeanPostProcessor用于再生成bean时进行处理
1:ConfigurationClassPostProcessor 用来处理带有@Configuration注解的类
2:AutowiredAnnotationBeanPostProcessor
用来处理@Autowired ,@Value,@Inject注解的依赖注入功能
3:RequiredAnnotationBeanPostProcessor
用来处理带有@Required注解的雨来注入
4:CommonAnnotationBeanPostProcessor
处理javax.annotation 包下注解@PostConstruct和@PreDestroy等
5:PersistenceAnnotationBeanPostProcessor
提供对jpa 相关注解的支持如@PersistenceUnit@PersistenceContext等