Java 将一个bean作为值注入另一个bean的属性
如何将一个bean作为值注入另一个bean的属性 比如说Java 将一个bean作为值注入另一个bean的属性,java,spring,jsf,dependency-injection,Java,Spring,Jsf,Dependency Injection,如何将一个bean作为值注入另一个bean的属性 比如说 public class FileNameGenerator { private String name; private String type; public String getName() { return name; } public void setName(String name) {
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>
公共类文件名生成器
{
私有字符串名称;
私有字符串类型;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getType(){
返回类型;
}
公共void集合类型(字符串类型){
this.type=type;
}
}
价值1
价值2
相反,我尝试在value1中注入工厂方法bean
<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>
价值2
我该怎么做?您需要使用SpEL:
<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>
#{T(org…path…SomeOtherClass).staticMethodThatReturnsString()}
价值2
美国工厂的上课方法,你们事先知道,这是不好的做法。你们知道你们需要字符串,你们知道如何从一些静态方法得到它——但返回字符串的方法不是facory。对于spel,只需调用字段
name
的静态方法。在您的案例中,使用工厂方法是过度使用的删除工厂bean周围的值标记
您的代码应该如下所示:
<bean id="FileNameGenerator" class="FileNameGenerator">
<property name="name">
<bean class="SomeOtherClass" factory-method="staticMethodThatReturnsString">
</property>
<property name="type">
<value>value2</value>
</property>
</bean>
价值2