BeanFactoryPostProcessor是一个接口,实现它的bean实际上是经过Spring生命周期的bean(下面的示例),但是这些bean不参与其他声明的bean的生命周期。
public class CustomBeanFactory implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { for (String beanName : beanFactory.getBeanDefinitionNames()) { BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName); // Manipulate the beanDefiniton or whatever you need to do } }}有关差异
BeanFactoryPostProcessor和
BeanPostProcessor:
- B
eanFactoryPostProcessor
当所有bean定义都将被加载但尚未实例化任何bean时,将调用bean实现。这甚至可以覆盖或添加属性,甚至可以用于初始化bean。这将使你可以访问以XML定义或已注释(通过component-scan扫描)的所有bean。 - Bean实现
BeanPostProcessor
对Bean(或对象)实例进行操作,这意味着当Spring IoC容器实例化Bean实例时,BeanPostProcessor
接口将完成其工作。 BeanFactoryPostProcessor
在所有上下文定义都将被加载之后,在Spring上下文启动期间“实现” BeanPostProcessor被“调用”,而在Spring IoC容器实例化一个bean时(即在所有单例启动时以及根据原型的需求启动时)“调用”实现。



