如何从BeanPostProcessor访问bean定义

时间:2016-02-17 11:44:31

标签: spring spring-boot

我们使用自定义bean定义注册一些bean,在BeanPostProcessor中我们需要访问bean定义

public Object postProcessBeforeInitialization(Object bean, String beanName)

我可以使它成为ApplicationContextAware,然后执行:

((ConfigurableApplicationContext)applicationContext).getBeanFactory().getBeanDefinition(beanName)

但是它确保applicationContext始终是ConfigurableApplicationContext吗? 还有另一种从BeanPostProcessor访问bean定义的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您需要访问BeanDefinition个实例,则应使用BeanFactoryPostProcessor代替BeanPostProcessor

<强>的BeanFactoryPostProcessor

  

允许自定义修改应用程序上下文的bean   定义,调整上下文的bean属性值   底层豆厂。 BeanFactoryPostProcessor可以与bean定义交互并修改bean定义,但绝不能与bean实例交互。

<强>的BeanPostProcessor

  

工厂挂钩,允许自定义修改新bean   实例,例如检查标记接口或用它们包装它们   代理。