BeanFactoryPostProcessor和BeanPostProcessor的区别

BeanFactoryPostProcessor和BeanPostProcessor都是Spring初始化bean的扩展点。两个接口很是类似。post


BeanFactoryPostProcessor能够对bean的定义(配置元数据)进行处理。也就是说,Spring IoC容器容许BeanFactoryPostProcessor在容器实际实例化任何其它的bean以前读取配置元数据,并有可能修改它。若是你愿意,你能够配置多个BeanFactoryPostProcessor。你还能经过设置'order'属性来控制BeanFactoryPostProcessor的执行次序。code


注册BeanFactoryPostProcessor的实例,须要重载void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;接口

经过beanFactory能够获取bean的示例或定义等。同时能够修改bean的属性,这是和BeanPostProcessor最大的区别。get

例如:it

BeanDefinition bd = beanFactory.getBeanDefinition("xxBean");  io

MutablePropertyValues mpv =  bd.getPropertyValues();  table

if(pv.contains("xxName"))  {  容器

    pv.addPropertyValue("xxName", "icoder");  扩展

}配置


注册BeanPostProcessor的实例,须要重载

Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;

Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;

还有一点区别就是BeanFactoryPostProcessor的回调比BeanPostProcessor要早。

相关文章
相关标签/搜索