Spring 使用MethodInvokingFactoryBean的GenericBean定义
我想动态地创建bean,并设置由其他bean的方法调用返回的一些属性值 没有动态bean创建,我的spring配置文件中有以下内容:Spring 使用MethodInvokingFactoryBean的GenericBean定义,spring,javabeans,Spring,Javabeans,我想动态地创建bean,并设置由其他bean的方法调用返回的一些属性值 没有动态bean创建,我的spring配置文件中有以下内容: <bean id="mybean" class="com.class.mybean"> <property name="customerName"> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"&
<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定义,而不是xml bean定义。为此,您应该在定义应用程序上下文的类上使用@Configuration注释。这里有一个例子
@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);
}