45、[源码]-Spring容器创建-执行BeanFactoryPostProcessor

时间:2023-03-09 02:08:15
45、[源码]-Spring容器创建-执行BeanFactoryPostProcessor

45、[源码]-Spring容器创建-执行BeanFactoryPostProcessor

5、invokeBeanFactoryPostProcessors(beanFactory);执行BeanFactoryPostProcessor的方法;
  • BeanFactoryPostProcessor:BeanFactory的后置处理器。在BeanFactory标准初始化之后执行的;
  • 两个接口:BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor
  • 1)、执行BeanFactoryPostProcessor的方法;
    • 先执行BeanDefinitionRegistryPostProcessor
      1. 获取所有的BeanDefinitionRegistryPostProcessor
      2. 看先执行实现了PriorityOrdered优先级接口的BeanDefinitionRegistryPostProcessor、postProcessor.postProcessBeanDefinitionRegistry(registry);
      3. 在执行实现了Ordered顺序接口的BeanDefinitionRegistryPostProcessor;
        postProcessor.postProcessBeanDefinitionRegistry(registry)
      4. 最后执行没有实现任何优先级或者是顺序接口的BeanDefinitionRegistryPostProcessors;
        postProcessor.postProcessBeanDefinitionRegistry(registry)
    • 再执行BeanFactoryPostProcessor的方法
      1. 获取所有的BeanFactoryPostProcessor
      2. 看先执行实现了PriorityOrdered优先级接口的BeanFactoryPostProcessor、
        postProcessor.postProcessBeanFactory()
      3. 在执行实现了Ordered顺序接口的BeanFactoryPostProcessor;
        postProcessor.postProcessBeanFactory()
      4. 最后执行没有实现任何优先级或者是顺序接口的BeanFactoryPostProcessor;
        postProcessor.postProcessBeanFactory()