以编程方式将Bean添加到Spring Web App上下文
由于采用了插件架构,因此我试图以编程方式将bean添加到我的webapp中。我有一个通过@Component
注释创建的Spring bean ,并且正在实现ApplicationContextAware
接口。
我的覆盖函数如下所示:
@Overridepublic void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
// this fails
this.applicationContext = (GenericWebApplicationContext) applicationContext;
}
基本上,我不知道如何向给setApplicationContext的applicationContext对象添加一个bean。谁能告诉我我将如何处理错误的方法?
好的,这就是我最终得到的解决方案:
@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry bdr)
throws BeansException {
BeanDefinition definition = new RootBeanDefinition(
<My Class>.class);
bdr.registerBeanDefinition("<my id>", definition);
}
回答:
在Spring 3.0中,你可以使自己的bean实现BeanDefinitionRegistryPostProcessor
并通过来添加新的bean BeanDefinitionRegistry
。
在早期版本的Spring中,你可以执行相同的操作BeanFactoryPostProcessor
(尽管你需要强制转换BeanFactory为BeanDefinitionRegistry
,这可能会失败)。
以上是 以编程方式将Bean添加到Spring Web App上下文 的全部内容, 来源链接: utcz.com/qa/408746.html