1、BeanDefinitionRegistryPostProcessor
处理顺序:
PriorityOrdered
Ordered
无
- postProcessorBeanDefinitionRegistry()
ConfigurationClassPostProcessor后置处理器
parser.parse(candidates);
// ......
this.reader.loadBeanDefinitions(configClasses);
1、parse方法
1、解析加了@PropertySources注解的类
2、如果加了@ComponentScan或者ComponentScans,扫描所有的包中的类并添加到beanDefinitionMap中
3、处理所有@Import注解导入的类(处理@ImportSelector,@ImportBeanDefinitionRegistrar,其他的按@Configuration类处理),将这些类变成ConfigurationClass,不会变成BeanDefinition
4、处理所有通过@ImportResource引入的配置文件
5、处理所有@Bean引入的类
6、处理接口中的默认方法
7、解析父类
2、loadBeanDefinitions方法
将通过@Import、@Bean等注解方式注册的类解析成BeanDefinition并放入BeanDefinitionMap中去
- postProcessorBeanFactory()
ConfigurationClassPostProcessor后置处理器
enhanceConfigurationClasses(beanFactory);
beanFactory.addBeanPostProcessor(new ImportAwareBeanPostProcessor(beanFactory));
1、对@Configuration注解的类进行代理(CGLIB)
2、添加一个后置处理器ImportAwareBeanPostProcessor
2、BeanFactoryPostProcessor
处理顺序
PriorityOrdered
Ordered
无
postProcessorBeanFactory()