我需要在运行时机会Spring bean属性值。目前我正在做这样春天设置抽象豆属性值
Object bean = context.getBean(beanName);
BeanWrapper wrapper = PropertyAccessorFactory.forBeanPropertyAccess(bean);
wrapper.setPropertyValue(propertyName, newValue);
但一些豆类配置为抽象
<bean id="abstractFoo" abstract="true" class="com.Foo" />
<bean id="bar" class="com.Bar">
<constructor-arg><bean parent="abstractFoo" /></constructor-arg>
</bean>
,并在这种情况下context.getBean("abstractFoo")
抛出BeanIsAbstractException
这真是简单的例子,但我希望你明白了。
任何想法如何更改抽象bean的属性值(在这种情况下'abstractFoo')? 我们正在使用弹簧2.5.4
编辑
改变一个XML例子更加具体。由于安全原因,abstractFoo被声明为抽象。
您需要谨慎从bean定义中区分出一个bean。例如' 'does * not *表示一个bean,只是一个bean定义。所以你不能以这个名字来请求一个bean,但是没有这样的bean。 –
skaffman
2011-03-31 10:30:03