如何从 BeanPostProcessor 访问 Bean 定义



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

public Object postProcessBeforeInitialization(Object bean, String beanName)

我可以让它成为 ApplicationContextAware 然后执行以下操作:

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

但是否可以确保应用程序上下文始终是可配置的应用程序上下文?有没有另一种方法可以从 BeanPostProcessor 访问 Bean 定义?

如果需要访问BeanDefinition实例,则应使用 BeanFactoryPostProcessor 而不是 BeanPostProcessor

BeanFactoryPostProcessor

允许对应用程序上下文的 Bean 进行自定义修改 定义,调整上下文的 Bean 属性值 底层豆厂。BeanFactoryPostProcessor 可以与 Bean 定义交互并修改它们,但从来不能修改 Bean 实例。

BeanPostProcessor

工厂钩子,允许自定义修改新豆 实例,例如检查标记接口或用 代理。

最新更新