2024-03-20
目录
Spring bean的后置处理器
BeanDefinitionRegistryPostProcessor
这个扩展点我们称之为beanDefinition后置处理器,可以动态注册自己的beanDefinition,可以加载classpath之外的bean。
BeanFactoryPostProcessor
这个扩展点我们称之为bean工厂后置处理器,调用时机在Spring在读取beanDefinition信息之后,实例化bean之前,主要对beanDefinition的属性进行修改调整,如作用范围scope,是否懒加载lazyInit等。
BeanPostProcessor
这个扩展点我们称之为bean后置处理器,调用时机是在bean实例化之后,会经过bean的初始化这一过程,该接口有两个方法,postProcessBeforeInitialization()在属性值填充之后,init()初始化方法执行之前调用。postProcessAfterInitialization()是在init初始化方法执行之后调用。
执行顺序
根据上面各个处理器的功能作用描述可以得到三个处理器的执行顺序:
BeanDefinitionRegistryPostProcessor → BeanFactoryPostProcessor → BeanPostProcessor
废话短说