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:
BeanFactoryPostProcessor
当所有bean定义都将被加载,但是尚未实例化任何bean时,将调用bean实现。这甚至可以覆盖或添加属性,甚至可以用于初始化bean。这将使您可以访问以XML定义或已注释(通过component-scan扫描)的所有bean。- Bean实现
BeanPostProcessor
对Bean(或对象)实例进行操作,这意味着当Spring IoC容器实例化Bean实例时,BeanPostProcessor接口将完成其工作。 BeanFactoryPostProcessor
在所有上下文定义都将被加载之后,在Spring上下文启动期间“实现”BeanPostProcessor
被“调用”,而在Spring IoC容器实例化bean时(即在所有单例的启动过程中以及根据原型的需求启动时)“调用”实现。



