2014-10-03 49 views
0

我有兩個bean:一個bean被變量end引用,另一個bean被propertyObject引用。由end引用的bean包含一個方法addProperty,該方法接受一個字符串和一個由propertyObject引用的對象爲實例的類型的對象。換句話說,您可以將一個字符串和propertyObject傳遞給addProperty。在Java代碼中,調用將如下所示:使用XML捕獲Spring方法調用的結果

end.addProperty("propertyObject", propertyObject); 

在Spring XML,代碼將如下所示:

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" ref="end"/> 
    <property name="targetMethod" value="addProperty"/> 
    <property name="arguments"> 
     <list> 
      <value>"property"</value> 
      <ref bean="propertyObject" /> 
     </list> 
    </property> 
</bean> 

addProperty返回一個對象的方法,我想捕捉它作爲Spring bean。

在Java代碼中,你會寫

Object obj = end.addProperty("propertyObject", propertyObject); 

,但我想知道如何做到這一點使用Spring XML。

回答

1

使用工廠方法並傳遞參數作爲構造函數參數。

<bean id="end" class="Yourclass"> 
</bean> 

<bean id="obj" factory-bean="end" factory-method="addProperty"> 
    <constructor-arg value="propertyObject" /> 
    <constructor-arg ref="propertyObject" /> 
</bean> 

應該這樣做。不過,您可能要考慮使用基於java的配置,因爲這會使事情變得更容易。

+0

我更喜歡基於Java的配置的想法,但唯一的問題是我無法訪問或編輯包含我描述的場景的多個示例的庫的源代碼。無論如何,謝謝你幫助我。您在我目前的項目中幫助我避免了很大的麻煩。 – 2014-10-03 06:34:06

相關問題