2015-06-22 81 views
1

我有一個返回類型爲'AbstractBeanDefinition'的方法,該方法應該設置所有必需的屬性並將其返回。如何在Spring 4中從Bean定義創建一個對象?

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(); 
    } 

回答

2

您需要註冊BeanDefinitionBeanDefinitionRegistry(與通常是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); 
相關問題