我想在春天做以下事情:
<beans>
...
<bean id="bean1" ... />
<bean id="bean2">
<property name="propName" value="bean1.foo" />
...
我认为这将访问 bean1 的 getFoo() 方法并调用 bean2 的 setPropName() 方法,但这似乎不起作用。
我想在春天做以下事情:
<beans>
...
<bean id="bean1" ... />
<bean id="bean2">
<property name="propName" value="bean1.foo" />
...
我认为这将访问 bean1 的 getFoo() 方法并调用 bean2 的 setPropName() 方法,但这似乎不起作用。
我的理解:
为什么不这样做:
<beans>
...
<bean id="foo" class="foopackage.foo"/>
<bean id="bean1" class="foopackage.bean1">
<property name="foo" ref="foo"/>
</bean>
<bean id="bean2" class="foopackage.bean2">
<property name="propName" ref="foo"/>
</bean>
....
</beans>
这样做,您的 bean2 不会像您的示例中那样与 bean1 耦合。您可以更改 bean1 和 bean2 而不会相互影响。
如果您真的需要进行您建议的注射,您可以使用:
<util:property-path id="propName" path="bean1.foo"/>
您需要使用PropertyPathFactoryBean:
<bean id="bean2" 依赖于="bean1"> <属性名称="propName"> <bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean"> <property name="targetBeanName" value="bean1"/> <property name="propertyPath" value="foo"/> </豆> </属性> </豆>
我认为您必须注入 bean1,然后foo
由于时间问题而手动获取。框架什么时候解析目标bean的值?
您可以创建一个指针 bean 并对其进行配置。
class SpringRef {
private String targetProperty;
private Object targetBean;
//getters/setters
public Object getValue() {
//resolve the value of the targetProperty on targetBean.
}
}
Common-BeanUtils应该会有所帮助。