我有一个返回类型为'AbstractBeanDefinition'的方法,该方法应该设置所有必要的属性并将其返回。
public AbstractBeanDefinition constructJMSMessage() {
BeanDefinitionBuilder theMessagingService = BeanDefinitionBuilder.rootBeanDefinition(MessagingService.class);
theMessagingService.addPropertyValue(..);
theMessagingService.addPropertyValue(..);
theMessagingService.addPropertyValue(..);
return theMessagingService.getBeanDefinition()
}
在调用者位置,我想基于此方法返回的bean定义创建一个对象。我怎样才能做到这一点 ?
public void ConstructIt()
{
MessagingService obj = constructJMSMessage();
}
最佳答案
您首先需要向BeanDefinition
(通常是BeanDefinitionRegistry
实例)注册DefaultListableBeanFactory
,然后将其用作常规bean。
FileSystemXmlApplicationContext c = new FileSystemXmlApplicationContext();
c.refresh();
BeanDefinitionRegistry bdr = (BeanDefinitionRegistry) c.getBeanFactory();
BeanDefinitionBuilder bdb = BeanDefinitionBuilder.genericBeanDefinition(String.class)
.addConstructorArgValue("test");
BeanDefinition bd = bdb.getBeanDefinition();
bdr.registerBeanDefinition("testBean", bd);
String tb = c.getBean("testBean", String.class);