ConfigurationClassPostProcessor详解
2023-01-09 17:19:29 4 举报
AI智能生成
ConfigurationClassPostProcessor 解析@Configuration
作者其他创作
大纲/内容
在创建容器的时候解析appConfig配置类为BeanDefinition
AnnotatedGenericBeanDefinition
在容器初始化的时候调用
org.springframework.context.support.AbstractApplicationContext#invokeBeanFactoryPostProcessors
处理appConfig配置类
@Condition
如果有则调用 matches 判断是否需要跳过
doProcessConfigurationClass
@Component
如果配置类上有则会找所有内部类,.当作导入的配置类处理
processMemberClasses
@PropertySources
获取注解上面配置的属性解析后添加到 Environment
@ComponentScan
会进行扫描,得到的BeanDefinition会注册到Spring容器中,如果是配置类则进行解析
org.springframework.context.annotation.ClassPathBeanDefinitionScanner#doScan
@Import
org.springframework.context.annotation.ConfigurationClassParser#processImports
普通类,那么会直接把它当做配置类来解析
ImportSelector,那么会将返回的类再次调用processImports()
DeferredImportSelector,那么暂时不会处理,会在解析完所有当前这轮配置类后进行导入,将返回的类再次调用processImports()
ImportBeanDefinitionRegistrar,那么暂时不会处理,会在解析完所有当前这轮配置类后,将配置类解析成为BeanDefinition之后进行调用
@Bean
解析配置类中的@Bean,但并没有真正处理@Bean,只是暂时找出来
如果有父类则递归解析
处理添加的配置,重复执行
enhanceConfigurationClasses
proxyBeanMethods=true 则增强配置类
所有 @Bean 的方法只会调用一次,多次调用会返回相同的对象
0 条评论
下一页