2017-07-07 84 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> 
相关问题