ConfigurationClassPostProcessor
概述
- 该类实现了 BeanDefinitionRegistryPostProcessor 接口,所以会重写 postProcessBeanDefinitionRegistry() 方法和 postProcessBeanFactory() 方法。
- 在 postProcessBeanDefinitionRegistry() 方法中解析了加了
@Configuration
注解的类,同时解析出@ComponentScan
和@ComponentScans
扫描出的Bean,也会解析出加了@Bean
注解的方法所注册的Bean,以及通过@Import
注解注册的Bean和@ImportResource
注解导入的配置文件中配置的Bean。
在 postProcessBeanDefinitionRegistry() 方法中,有两个十分重要的方法:
- ConfigurationClassParser.parse()
核心解析流程 - this.reader.loadBeanDefinitions()
将完全填充好的ConfigurationClass实例转化为BeanDefinition注册入IOC容器
- 在 postProcessBeanFactory() 方法中,会利用CGLIB对加了
@Configuration
注解的类创建动态代理,进行增强。最后还会向spring容器中添加一个Bean后置处理器:ImportAwareBeanPostProcessor
流程图
相关文章
ConfigurationClassPostProcessor —— Spring中最!最!最!重要的后置处理器!没有之一!!!