2016-02-26 68 views
2

我想在Spring中用等价的bean定义重现Java代码中的赋值。据我所知,Spring只允许你为对象内的字段赋值(假定类定义了合适的setter方法)。有没有办法简单地捕获使用Spring bean的对象的引用?您可以直接在Spring中为bean分配一个值吗?

这里是我怎么会想到这个工作的例子:

<!-- Non-working example. --> 
<bean id="string" class="java.lang.String"> 
    <value>"I am a string."</value> 
</bean> 

我意识到,在这个特殊的情况下,我可以只使用一个<constructor-arg>,但是我正在寻找更普遍的解决办法,也适用于不提供参数化构造函数的类。

回答

0

这里使用的东西是factory-method,可能与factory-bean一起使用。 (非静态函数必须由适当类型的bean实例化。)在我的示例问题中,我想捕获返回String的函数的输出。比方说,功能如下:

class StringReturner { 
    public String gimmeUhString(String inStr) { 
     return "Your string is: " + instr; 
    } 
} 

首先,我需要创建StringReturner类型的豆。

<bean name="stringReturner" class="how.do.i.java.StringReturner" /> 

然后我通过调用所需函数作为factory-method实例化我的String bean。

<bean id="string" factory-bean="stringReturner" factory-method="gimmeUhString"> 
    <constructor-arg> 
     <value>I am a string.</value> 
    </constructor-arg> 
</bean> 

这是(对我而言),相当于说:使用<constructor-arg>元素,你甚至可以提供参数的工厂方法

StringReturner stringReturner = new StringReturner(); 
String string = stringReturner.gimmeUhString("I am a string."); 
2

字符串类是不可变的。没有财产setter method可用java.lang.String类。如果你想注入属性值,你可以使用下面:

<bean id="emp" class="com.org.emp"> 
    <property name="name" value="Alex" /> 
</bean> 

在上面的obj emp,其名称属性将设置为亚历克斯。

0

字符串不是豆,豆是Objet公司,他的具有带空参数和属性的构造函数的类可通过Getters方法访问,并可由Setters修改方法

相关问题