吃透Spring源码(十六):ConfigurationClassPostProcessor详细介绍
文章目录
-
- 一,ConfigurationClassPostProcessor简介
- 二,ConfigurationClassPostProcessor注入时机
-
- 1,注解方式的注入
- 2,XML方式的注入
- 三,postProcessBeanDefinitionRegistry()方法
-
- 1,第一步,筛选出被@Configuration注解标注的BeanDefinition
- 2,第二步,解析被@Configuration注解标注的BeanDefinition
- 3,第三步,将扫描到的所有beanDefinition注册到容器的BeanDefinitionMap中
- 4,第四步,判断第三步中注入到BeanDefinitionMap中BeanDefinition是否已经被解析过,如果没有被解析过,那么需要继续解析
- 四,postProcessBeanFactory()方法
- 五,总结
一,ConfigurationClassPostProcessor简介
ConfigurationClassPostProcessor是一个后置处理器的类,主要功能是参与BeanFactory的建造,主要功能如下:
- 解析加了@Configuration的配置类
- 解析@ComponentScan扫描的包
- 解析@ComponentScans扫描的包
- 解析@Import注解
ConfigurationClassPostProcessor类图:

ConfigurationClassPostProcessor 实现了 BeanDefinitionRegistryPostProcessor 接口,而 BeanDefinitionRegistryPostProcessor 接口继承了 BeanFactoryPostProcessor 接口,所以 ConfigurationClassPostProcessor 中需要重写 postProcessBeanDefinitionRegistry() 方法和 postProcessBeanFactory() 方法。