springboot注解配置相关源码位置

springboot默认使用的容器是AnnotationConfigEmbeddedWebApplicationContext

改容器内部使用了AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionScanner

AnnotatedBeanDefinitionReader在构造函数中注册了很多BeanFactoryPostProcessor

AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);

其中就有一个ConfigurationClassPostProcessor

由这个ConfigurationClassPostProcessor处理springboot的启动类的@Configuration注解

大致流程postProcessBeanDefinitionRegistry=》processConfigBeanDefinitions=》parse=》processConfigurationClass

@PropertySources @ComponentScans @Import @ImportResource @Bean 等注解都在

doProcessConfigurationClass方法中处理


再回到之前的AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);发现里面还注册了其他的处理器,

AutowiredAnnotationBeanPostProcessor就是其中一个

这个注解处理@Autowired和@Value注解


postProcessBeanDefinitionRegistry 方法中解析完bean的信息之后,

会使用ConfigurationClassBeanDefinitionReader注册bean。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章