2011-09-16 11 views
2

Spring IOCの新機能です。このメソッドをアプリケーションコンテキストXMLのBean定義に変換するにはどうすればよいですか?アプリケーションコンテキスト(Spring)のJava Bean定義

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)を使用し、春IOCからのクライアントのインスタンスを取得したいので、このような何か:

<!-- 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

「メソッドをBeanの定義に変換する」という意味が不明です。あなたは正確に何をしたいですか? –

答えて

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

あなたのように思えます。それは働いていませんでしたか?次に、このBeanを、それを使用する必要のあるクラスへのプロパティまたはコンストラクタargとしてrefとして渡す必要があります。

0

静的なファクトリメソッドを使ってBeanを作成するようSpringに指示する方法を聞いていたと思います。

This threadが参考になる場合があります。

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

は、これは私があなたのコードに持っていたかを正確に を行うに来る可能性が最も近い

0

を動作するはずです。 ApacheHttpClientConfig.PROPERTY_CONNECT_TIMEOUTの値を文字通り参照し、RESTUtil.dispatcherHttpTimeOutの値を120に設定しなければなりませんでした。なぜなら、それが何であるかわからないからです。 "#{120}"式は、その値を文字列ではなくIntegerとして渡すために必要であり、例外が発生することに注意してください。

<!-- 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> 
関連する問題