由于采用了插件架构,因此我试图以编程方式将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);}
3 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
这是一个简单的代码:
ConfigurableListableBeanFactory beanFactory = ((ConfigurableApplicationContext) applicationContext).getBeanFactory();
beanFactory.registerSingleton(bean.getClass().getCanonicalName(), bean);
回首忆惘然
TA贡献1847条经验 获得超11个赞
为什么需要它是类型GenericWebApplicationContext?
我认为您可能可以使用任何ApplicationContext类型。
通常,您将使用init方法(除了setter方法之外):
@PostConstruct
public void init(){
AutowireCapableBeanFactory bf = this.applicationContext
.getAutowireCapableBeanFactory();
// wire stuff here
}
然后您可以使用
AutowireCapableBeanFactory.autowire(Class, int mode, boolean dependencyInject)
要么
AutowireCapableBeanFactory.initializeBean(Object existingbean, String beanName)
添加回答
举报
0/150
提交
取消