Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?

容器创建时会调用AbstractApplicationContext的refresh方法,其中会调用invokeBeanFactoryPostProcessor方法,如下图Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?_第1张图片
invokeBeanFactoryPostProcessors代码如下:
Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?_第2张图片
其中调用的PostProcessorRegistrationDelegate的invokeBeanFactoryPostProcessors方法代码如下:
Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?_第3张图片
Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?_第4张图片
Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?_第5张图片
Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?_第6张图片
可以从上图看到,首先获取类型为BeanFactoryPostProcessor的所有bean的名字,然后遍历获取到的名字,最后调用getBean方法并把名字传进去,根据Spring的getBean流程,我们可以知道,此处调用getBean会最终调用doCreateBean来创建bean的实例,也就是创建出BeanFactoryPostProcessor的实例

你可能感兴趣的:(Spring,spring,java,后端)