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。


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