1. 定义
BeanFactoryPostProcessor, 翻译过来大致是Bean的工厂处理器,顾名思义,可以理解为它对Bean工厂中Bean定义(BeanDefintion)进行修改, 它的执行时机:BeanFactory标准初始化之后,所有的Bean定义已经被加载,但标准Bean的实例还没被创建(不包括BeanFactoryPostProcessor类型)。该方法通常用于修改bean的定义,Bean的属性值等,甚至可以在此快速初始化Bean。
延伸
PriorityOrdered 和Ordered接口
这两个接口可以被实现用于控制执行某件事情的优先级。PriorityOrdered继承了Ordered接口。
在BeanFactoryPostProcessor的实现类中,可以分为三种实现类
一种是实现了PriorityOrdered的类,一种是实现了Ordered的类,一种是都没有实现的类。
加载顺序为PriorityOrdered -> Ordered -> 都没实现。
在Autowired注入的时候
其中实现PriorityOrderded的类会在最开始被加载,这些类要谨慎使用Autowired注入其他bean,因为这些类被注册时,很可能AutowiredAnnoataionBeanPostProcessor还没有被加载,要注入的bean加载不进来。