2008-09-27 99 views

回答

6

我的理解:

  1. 你有一顆豆(bean1)與 財產被稱爲 「富」
  2. 你有另一個bean( bean2)與名爲「propName」的 屬性,其中 必須具有與 bean1中相同的「foo」。

爲什麼不這樣做:

<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"/> 
-2

我想你必須注入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應該是有幫助的。

5

您需要使用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> 
+0

替代的語法使用「id」屬性設置目標bean的名字和屬性路徑。 flicken 2008-09-27 04:33:12