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

 

相关文章:

  • 2021-10-08
  • 2021-11-29
  • 2022-12-23
  • 2021-07-14
  • 2023-03-31
  • 2021-08-06
  • 2021-10-26
猜你喜欢
  • 2021-09-08
  • 2022-12-23
  • 2021-09-30
  • 2021-07-24
  • 2022-02-06
  • 2021-06-02
相关资源
相似解决方案