BeanFactory后置处理器
BeanDefinitionRegistryPostProcessor和ImportBeanDefinitionRegistrar的区别
要想了解BeanDefinitionRegistryPostProcessor,
那就要从他的父接口BeanFactoryPostProcessor说起
1、BeanFactoryPostProcessor
@FunctionalInterface
public interface BeanFactoryPostProcessor {
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
}
该接口是spring的扩展点之一
- 实现该接口,可以在spring的bean创建之前修改bean的定义属性
- spring允许BeanFactoryPostProcessor在容器实例化任何其他bean之前读取配置元数据
并可以根据需要进行修改,例如可以把bean的scop从singleton改为protatype,也可以把property的值修改掉 - 同时配置多个BeanFactoryPostProcessor,并通过设置‘order’属性来控制各个BeanFactoryPostProcessor的执行顺序
- BeanFactoryPostProcessor是在spring容器加载了bean的定义文件之后,在bean实例化之前执行的