文章目录
-
- 前言
- 1.概述
- 2.准备工作
- 3.源码调试
-
- invokeBeanFactoryPostProcessors
-
- 3.1.getBeanFactoryPostProcessors()
- 3.2.invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory, List beanFactoryPostProcessors)
-
- 3.2.1 先来介绍一下这个方法中出现的集合。
- 3.2.2 源码调试分析
-
- 3.2.2.1 处理手动添加的 实现了BeanDefinitionRegistryPostProcessor接口的类
- 3.2.2.2 处理Spring自带的后置处理器ConfigurationClassPostProcessor
- 3.2.2.3 处理spring扫描的并且是实现了BeanDefinitionRegistryPostProcessor和Ordered接口的类
- 3.2.2.4 处理spring扫描的并且实现了BeanDefinitionRegistryPostProcessor接口没有实现Ordered接口的类
- 3.2.2.5 处理实现了BeanDefinitionRegistryPostProcessor接口的类 的父接口BeanFactoryPostProcessor的逻辑
- 3.2.2.6 处理程序手动添加的并且实现了BeanFactoryPostProcessor接口的类
- 3.2.2.7 处理Spring扫描的并且实现了BeanFactoryPostProcessor接口的类
- 4.总结
前言
先提几个问题,如果对以下这几个问题不了解,那么仔细的看看这篇博客,希望可以解决你的疑问。
1.BeanFactoryPostProcessor接口和BeanDefinitionRegistryPostProcessor接口的作用是什么?
2.invokeBeanFactoryPostProcessors 方法内 不同类型的后置处理器的执行顺序是怎样的?
3.invokeBeanFactoryPostProcessors 方法内出现的集合各自存储的都是什么,有什么作用?
4.为什么有一段代码需要用到while循环?
5.哪一步完成了扫描,将加了注解的类注册到bdMap中。
1.概述
根据名字就可以知道这个方法的主要作用就是执行BeanFactoryPostProcessor
该方法会实例化并调用所有需要被执行的BeanFactoryPostProcessor(包括它的子类BeanDefinitionRegistryPostProcessor)。
BeanFactoryPostProcessor接口是spring提供的扩展点,程序员可以实现这个接口或子接口来扩展spring。
那么BeanFactoryPostProcessor接口和BeanDefinitionRegistryPostProcessor接口的作用是什么呢?