2013-10-29 20 views
0

我想動態地創建bean並設置其他bean的方法調用返回的一些屬性值。GenericBeanDefinition與MethodInvokingFactoryBean

沒有動態bean創建的,我有我的Spring配置文件如下:

<bean id="mybean" class="com.class.mybean"> 
    <property name="customerName"> 
     <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
      <property name="targetObject" ref="otherBean" /> 
      <property name="targetMethod" value="getCustomerName()" /> 
     </bean> 
    </property> 
</bean> 

使用動態bean創建的,這裏是我的代碼

@Override 
public void postProcessBeanFactory(
     ConfigurableListableBeanFactory beanFactory) throws BeansException { 
     this.factory = beanFactory; 

     BeanDefinitionRegistry registry = ((BeanDefinitionRegistry)factory); 
     GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); 
     beanDefinition.setBeanClass(MyBeanClass.class); 
     beanDefinition.setLazyInit(false); 
     beanDefinition.setAbstract(false); 
     beanDefinition.setAutowireCandidate(true); 
     //beanDefinition.setScope("session"); 
     MutablePropertyValues values = new MutablePropertyValues(); 
     values.addPropertyValue("customerName", ????); 
     beanDefinition.setPropertyValues(values); 
     registry.registerBeanDefinition("myDynamicBean",beanDefinition); 

} 

什麼是在這種情況下,等同方式?

回答

-1

不應該使用xml bean定義,而應該使用類bean定義。爲此,您應該在定義應用程序上下文的類上使用@Configuration批註。這裏是一個例子Spring Configuration