BeanFactoryPostProcessor和BeanPostProcessor

1. BeanFactoryPostProcessor调用(见AbstractApplicationContext.invokeBeanFactoryPostProcessors):

>> 创建DefaultListableBeanFactory --> loadBeanDefinitions

1)BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(编码注册)

2)BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(配置注册):PriorityOrdered排序 --> Ordered排序 --> Regular无序

3)BeanDefinitionRegistryPostProcessor.postProcessBeanFactory(编码注册)

4)BeanDefinitionRegistryPostProcessor.postProcessBeanFactory(配置注册):PriorityOrdered排序 --> Ordered排序 --> Regular无序

5)BeanFactoryPostProcessor.postProcessBeanFactory(编码注册)

6)BeanFactoryPostProcessor.postProcessBeanFactory(配置注册):PriorityOrdered排序 --> Ordered排序 --> Regular无序

 

2. BeanPostProcessor注册(见AbstractApplicationContext.registerBeanPostProcessors):

1)BeanPostProcessor:PriorityOrdered排序 --> Ordered排序 --> Regular无序

2)MergedBeanDefinitionPostProcessor:PriorityOrdered排序 --> Ordered排序 --> Regular无序

 

3. BeanPostProcessor调用(见DefaultListableBeanFactory.createBean):

1)InstantiationAwareBeanPostProcessor.applyBeanPostProcessorsBeforeInstantiation(resolveBeforeInstantiation)

>> return Bean ( == null ) --> 7)

>> return Bean ( != null ) --> createBeanInstance(默认:CglibSubclassingInstantiationStrategy.instantiate)

2)MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition

>> populateBean

3)InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation

>> return false --> 5)

>> return true --> autowireByName / autowireByType

4)InstantiationAwareBeanPostProcessor.postProcessPropertyValues

>> return PropertyValues ( == null ) 

>> return PropertyValues ( != null ) --> applyPropertyValues

5)initializeBean --> invokeAwareMethods

6)BeanPostProcessor.postProcessBeforeInitialization(@postConstruct)

>> invokeInitMethod:InitializingBean.afterPropertiesSet --> invokeCustomInitMethod(init-method )

7)BeanPostProcessor.postProcessAfterInitialization

>> 单实例(容器初始化完成):SmartInitializingSingleton.afterSingletonsInstantiated

 

posted @ 2019-02-23 21:06  Uncle_Bjorney  阅读(202)  评论(0编辑  收藏  举报