执行 BeanFactoryPostProcess

  1. invokeBeanFactoryPostProcessors(beanFactory);

执行流程:

  1. 执行通过 ApplicationContext 添加进来的 BeanDefinitionRegistryPostProcessor 的 postPorcessBeanDefinitionRegistry() 方法

  2. 执行 BeanFactory 中实现了 PriorityOrdered 接口的 BeanDefinitionRegistryPostProcessor 的postPorcessBeanDefinitionRegistry() 方法

  3. 执行 BeanFactory 中实现了 Ordered 接口的 BeanDefinitionRegistryPostProcessor 的postPorcessBeanDefinitionRegistry() 方法
  4. 执行 BeanFactory 中其他的 BeanDefinitionRegistryPostProcessor 的postPorcessBeanDefinitionRegistry() 方法

  5. 执行上述所有的 BeanDefinitionRegistryPostProcessor 的 postProcessBeanFactory() 方法

  6. 执行通过 ApplicationContext 添加进来的 BeanDefinitionPostProcessor 的 postProcessBeanFactory() 方法

  7. 执行 BeanFactory 中实现了 PriorityOrdered 接口的 BeanFactoryPostProcessor 的 postProcessBeanFactory() 方法
  8. 执行 BeanFactory 中实现了 Ordered 接口的 BeanFactoryPostProcessor 的 postProcessBeanFactory() 方法

  9. 执行 BeanFactory 中其他的 BeanFactoryPostProcessor 的 postProcessBeanFactory() 方法

Spring 启动流程.png