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);

posted @ 2023-02-09 16:55  sugarstar  阅读(24)  评论(0)    收藏  举报