我们使用自定义bean定义注册一些bean,在BeanPostProcessor中我们需要访问bean定义
public Object postProcessBeforeInitialization(Object bean, String beanName)
我可以使它成为ApplicationContextAware,然后执行:
((ConfigurableApplicationContext)applicationContext).getBeanFactory().getBeanDefinition(beanName)
但是它确保applicationContext始终是ConfigurableApplicationContext吗? 还有另一种从BeanPostProcessor访问bean定义的方法吗?
答案 0 :(得分:1)
如果您需要访问BeanDefinition
个实例,则应使用BeanFactoryPostProcessor
代替BeanPostProcessor
。
<强>的BeanFactoryPostProcessor 强>
允许自定义修改应用程序上下文的bean 定义,调整上下文的bean属性值 底层豆厂。 BeanFactoryPostProcessor可以与bean定义交互并修改bean定义,但绝不能与bean实例交互。
<强>的BeanPostProcessor 强>
工厂挂钩,允许自定义修改新bean 实例,例如检查标记接口或用它们包装它们 代理。