2012-10-10 48 views
1

在Spring XML中有複合屬性名稱,但我找不到複合屬性值。在RHS中引用Spring XML中的屬性屬性?

假設我有Person吸氣用以下原型:

class Person { 
    Person getFather(); 
    void setFather(Person value); 
    String getAge(); 
    void setAge(String value); 
    ... 
} 

Company原型就像如下:

class Company { 
    Person getOwner(); 
    void setOwner(Person value); 
    ... 
} 

我可以用的東西連接這些像

<bean id="Bob" class="Person"/> 

<bean id="Barnyard" class="Company"> 
    <property name="owner" ref="Bob.father"/> 
</bean> 

以上不起作用說「沒有豆與Bob.father id「。

下也不起作用

<bean id="Barnyard" class="Company"> 
    <property name="owner" value="Bob.father"/> 
</bean> 

說不能轉換StringPerson

如何完成?

UPDATE

假設我想成立公司老闆的年齡。顯然,我應該這樣寫:

<bean id="Barnyard" class="Company"> 
    <property name="owner" value="#{Bob.father}"/> 
    <property name="owner.age" value="38"/> 
</bean> 

這不是一個糟糕的設計時,我可以使用左側的屬性的屬性,但不能做同樣的吧??

回答

1

春天EL將在這裏也行,甚至比你有previously問題更簡潔 -

<bean id="Barnyard" class="Company"> 
    <property name="owner" value="#{Bob.father}"/> 
</bean> 
+0

通過我不明白爲什麼左側作品,未經EL,而右側則沒有。 –

+0

當你指定''bean id =「barnyard」..>''''''''基本上Spring正在調用'owner'屬性的setter,'' barnyard.setOwner(..)',現在如果你想引用另一個bean,你可以使用'',但是如果你想解析另一個bean中的某個字段,那麼只有選項類似於Spring-El,它可以評估像上面定義的表達式來解析'Bob' bean的'getFather'。更多細節在這裏http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html –

+0

通過我可以寫''即我可以參考左側屬性的屬性。 EL需要在右側做同樣的事情。我猜這是糟糕的設計。 –