我有一个返回类型为'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();
}
答案 0 :(得分:2)
您需要先将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);