我想在春天做类似下面的事情:
<beans>
...
<bean id="bean1" ... />
<bean id="bean2">
<property name="propName" value="bean1.foo" />
...
Run Code Online (Sandbox Code Playgroud)
我认为这将访问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>
Run Code Online (Sandbox Code Playgroud)
这样做,你的bean2没有像你的例子那样耦合到bean1.您可以更改bean1和bean2而不会相互影响.
如果你真的需要做你建议的注射,你可以使用:
<util:property-path id="propName" path="bean1.foo"/>
Run Code Online (Sandbox Code Playgroud)
您需要使用PropertyPathFactoryBean:
<bean id="bean2" depends-on="bean1">
<property name="propName">
<bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
<property name="targetBeanName" value="bean1"/>
<property name="propertyPath" value="foo"/>
</bean>
</property>
</bean>
| 归档时间: |
|
| 查看次数: |
3527 次 |
| 最近记录: |