2016-02-26 39 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修改方法

相關問題