registerBeanPostProcessors(beanFactory)
注册BeanPostProcessor后置处理器,拦截bean的创建过程
不同接口类型的BeanPostProcessor在bean创建前后的执行时机是不一样的
BeanPostProcessor
InstantiationAwareBeanPostProcessor,
DestructionAwareBeanPostProcessor,
SmartInstantiationAwareBeanPostProcessor,
MergedBeanDefinitionPostProcessor【internalPostProcessors】
1、获取所有的BeanPostProcessor;后置处理器都默认可以有PriorityOrdered、Ordered接口来处理优先级
2、先注册PriorityOrdered优先级接口的BeanPostProcessor
把每一个BeanPostProcessor:添加到BeanFactory
beanFactory.addBeanPostProcessor(postProcessor);
3、再注册Ordered接口
4、最后注册没有实现任何优先级接口的
5、最终注册MergedBeanDefinitionPostProcessor:
registerBeanPostProcessors(beanFactory, internalPostProcessors);
6、注册一个ApplicationListenerDetector:来在Bean创建完成后检查是否是ApplicationListener,如果是this.applicationContext.addApplicationListener((ApplicationListener<?>) bean);

浙公网安备 33010602011771号