赞
踩
处理顺序:
PriorityOrdered
Ordered
无
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中去
ConfigurationClassPostProcessor后置处理器
- enhanceConfigurationClasses(beanFactory);
- beanFactory.addBeanPostProcessor(new ImportAwareBeanPostProcessor(beanFactory));
1、对@Configuration注解的类进行代理(CGLIB)
2、添加一个后置处理器ImportAwareBeanPostProcessor
处理顺序
PriorityOrdered
Ordered
无
postProcessorBeanFactory()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。