BeanDefinitionRegistryPostProcessor
BeanDefinitionRegistryPostProcessor 接口
完成对 BeanDefinition 的新增、修改;
java
public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {
void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException;
}
BeanFactoryPostProcessor 接口
可以 获取到 ConfigurableListableBeanFactory 对象。在项目中 controller, service 等 bean 未实例化之前,注册一些自定义组件 bean 到 Spring 容器中。
java
@FunctionalInterface
public interface BeanFactoryPostProcessor {
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
}
Spring 核心方法中 invokeBeanFactoryPostProcessors(beanFactory);
在 Spring 核心流程中,invokeBeanFactoryPostProcessors(beanFactory); 方法完成了对实现了 BeanDefinitionRegistryPostProcessor,BeanFactoryPostProcessor 接口的调用。
其中,BeanDefinitionRegistryPostProcessor 继承了 BeanFactoryPostProcessor。
这个方法对以上两个接口的实现类做了实例化注册到 Spring 容器并完成对上面这两个接口的调用,调用顺序如下:
- BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry);
- BeanDefinitionRegistryPostProcessor.postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory);
- BeanFactoryPostProcessor.postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory);