2011-09-16 87 views
2

我是Spring IOC的新手,我該如何將此方法轉換爲應用程序上下文xml中的bean定義?應用程序上下文中的Java bean定義(Spring)

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.client.apache.ApacheHttpClient; 
import com.sun.jersey.client.apache.config.ApacheHttpClientConfig; 
import com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig; 

public static Client getRestClient() { 
    // configuration for jersey client 
    ApacheHttpClientConfig config = new DefaultApacheHttpClientConfig(); 
    Map<String, Object> properties = config.getProperties(); 
    properties.put(ApacheHttpClientConfig.PROPERTY_CONNECT_TIMEOUT, 
      RESTUtil.dispatcherHttpTimeOut); 

    // create client 
    return ApacheHttpClient.create(config); 
} 

更多細節:我想從春季國際奧委會獲得客戶端的一個實例,目前我用這個方法(getRestClient)得到它,所以是這樣的:

<!-- Apache http rest client --> 
<bean id="apacheHttpClient" name="Rest Client" 
    class="com.sun.jersey.client.apache.ApacheHttpClient" factory-method="create"> 
    <constructor-arg></constructor-arg> 
</bean> 

請讓我知道是否需要更多信息。

+0

不確定你的意思是'convert method to bean definition'。你到底想做什麼? –

回答

0
<bean id="apacheHttpClient" class="com.sun.jersey.client.apache.ApacheHttpClient" 
     factory-method="getRestClient"/> 

看起來像你幾乎沒有它。它不工作?然後您需要將此bean作爲屬性或構造函數arg的ref傳遞給需要使用它的任何類。

0

我想你想問的是如何告訴Spring使用靜態工廠方法創建bean。

This thread可能會有所幫助。

<bean id="restClient" class="com.your.app.ClassWithTheFactoryMethod" factory-method="getRestClient"/> </bean>

應該工作

0

這是我能來幹什麼正是你在你的代碼有什麼最接近的一次。我必須從字面上引用ApacheHttpClientConfig.PROPERTY_CONNECT_TIMEOUT的值,並將RESTUtil.dispatcherHttpTimeOut放在120中(因爲我不知道它是什麼)。請注意,需要使用「#{120}」表達式將該值作爲整數而不是字符串傳遞,這會導致異常。

<!-- Apache http rest client --> 
<bean id="apacheHttpClient" name="Rest Client" 
    class="com.sun.jersey.client.apache.ApacheHttpClient" factory-method="create"> 
    <constructor-arg> 
     <bean class="com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig"> 
      <property name="properties['com.sun.jersey.client.property.connectTimeout']" value="#{120}" /> 
     </bean> 
    </constructor-arg> 
</bean> 
相關問題