容器创建时会调用AbstractApplicationContext的refresh方法,其中会调用invokeBeanFactoryPostProcessor方法,如下图
invokeBeanFactoryPostProcessors代码如下:
其中调用的PostProcessorRegistrationDelegate的invokeBeanFactoryPostProcessors方法代码如下:
可以从上图看到,首先获取类型为BeanFactoryPostProcessor的所有bean的名字,然后遍历获取到的名字,最后调用getBean方法并把名字传进去,根据Spring的getBean流程,我们可以知道,此处调用getBean会最终调用doCreateBean来创建bean的实例,也就是创建出BeanFactoryPostProcessor的实例