2017-07-07 86 views
0

如何將某個bean作爲值注入另一個bean的屬性?將bean作爲值注入另一個bean的屬性

例如

 public class FileNameGenerator 
    { 
     private String name; 
     private String type; 

     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public String getType() { 
      return type; 
     } 
     public void setType(String type) { 
      this.type = type; 
     } 
    } 

<bean id="FileNameGenerator" class="FileNameGenerator"> 
     <property name="name"> 
      <value>value1</value> 
     </property> 
     <property name="type"> 
      <value>value2</value> 
     </property> 
    </bean> 

相反,我試圖注入在VALUE1工廠方法豆

<bean id="FileNameGenerator" class="FileNameGenerator"> 
       <property name="name"> 
        <value> 
<bean class="SomeOtherClass" factory-method="staticMethodThatReturnsString"> 
</value> 
       </property> 
       <property name="type"> 
        <value>value2</value> 
       </property> 
      </bean> 

我將如何做到這一點?

回答

0

你需要使用規劃環境地政司:爲讓你知道類提前

<bean id="FileNameGenerator" class="org....path....FileNameGenerator"> 
     <property name="name"> 
     <value>#{T(org....path....SomeOtherClass).staticMethodThatReturnsString()}</value> 
     </property> 
     <property name="type"> 
     <value>value2</value> 
     </property> 
    </bean> 

我們工廠的方法,這是不好的做法。你知道你需要String並且你知道如何從一些靜態方法中獲得它 - 但是返回String的方法並不是簡單的。用spel只需將該靜態方法稱爲name。在你的情況下使用工廠方法它是過度使用

0

刪除工廠bean周圍的標籤。

您的代碼應該是這樣的:

<bean id="FileNameGenerator" class="FileNameGenerator"> 
    <property name="name"> 
     <bean class="SomeOtherClass" factory-method="staticMethodThatReturnsString"> 
    </property> 
    <property name="type"> 
     <value>value2</value> 
    </property> 
</bean> 
相關問題