BeanFactoryPostProcessor实现类是在ioc容器进行标准初始化后,可对容器的beanDefinition进行相关操作,此时bean还未实例化。
BeanFactoryPostProcessor:可对容器的beanDefinition信息进行修改
BeanDefinitionRegistry:可自定义向容器注册beanDefinition
容器在refresh方法中调用invokeBeanFactoryPostProcessors方法创建BeanFactoryPostProcessor实现类并运行后置处理方法。

1、在invokeBeanFactoryPostProcessors方法中,先运行容器已有的beanFactory后置处理器集合中实现BeanDefinitionRegistry接口的实现类的postProcessBeanDefinitionRegistry方法。

BeanDefinitionRegistry接口继承了BeanFactoryPostProcessor接口,我们可通过实现BeanDefinitionRegistry接口的postProcessBeanDefinitionRegistry方法中注册自定义的beanDefinition到容器中。
2、接着扫描得到容器中实现BeanDefinitionRegistry接口的beanDefinition集合,按照顺序先创建实现PriorityOrdered接口的实现类对象,调用invokeBeanDefinitionRegistryPostProcessors方法运行对象的postProcessBeanDefinitionRegistry方法。
例如:ConfigurationClassPostProcessor实现BeanDefinitionRegistry、PriorityOrdered接口,在此处会运行ConfigurationClassPostProcessor的postProcessBeanDefinitionRegistry方法扫描容器的配置类得到beanDefinition集合。
ConfigurationClassPostProcessor解析配置类流程可参考分析-ConfigurationClassPostProcessor原理_Just-Today的博客-CSDN博客
3、接着在创建运行实现Ordered接口的BeanDefinitionRegistry实现类对象并运行方法。
4、创建没实现PriorityOrdered、Ordered接口的BeanDefinitionRegistry实现类对象并运行方法。
5、接着按照顺序先创建实现了PriorityOrdered接口的BeanFactoryPostProcessor实现类对象,通过invokeBeanFactoryPostProcessors方法遍历BeanFactoryPostProcessor集合运行postProcessBeanFactory方法

6、在创建实现了Ordered接口的BeanFactoryPostProcessor实现类并运行方法。
7、最后在运行没实现PriorityOrdered、Ordered接口的BeanFactoryPostProcessor实现类并运行方法。