0

我想动态创建bean并设置其他bean的方法调用返回的一些属性值。

如果没有动态 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);  

}

在这种情况下等效的方法是什么?

4

1 回答 1

-1

您应该使用类 bean 定义而不是 xml bean 定义。为此,您应该 @Configuration在定义应用程序上下文的类上使用注释。这是一个示例Spring 配置

于 2013-10-30T09:11:29.013 回答