2017-08-03 13 views
0

経由RestTemplateを注入します。 (私は、このリンクを見て)私は(接続設定で)のConnectionManagerを入れは、私は例として、コードのこの部分を持って春

<bean id="requestConfigBuilder" class="org.apache.http.client.config.RequestConfig" 
     factory-method="custom"> 
     <property name="socketTimeout" value="5000" /> 
     <property name="connectTimeout" value="5000" /> 
    </bean> 

    <bean id="requestConfig" factory-bean="requestConfigBuilder" 
     factory-method="build" /> 

    <bean id="connectionManager" 
     class="org.apache.http.conn.HttpClientConnectionManager"> 
     <property name="maxTotal" value="30" /> 
     <property name="defaultMaxPerRoute" value="50" /> 
    </bean> 

    <bean id="credentialsProvider" class="org.apache.commons.httpclient.auth.CredentialsProvider"/> 


    <bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder" 
     factory-method="create"> 
     <property name="defaultRequestConfig" ref="requestConfig" /> 
     <property name="defaultConnectionManager" ref="connectionManager"/> 
     <property name="defaultCredentialsProvider" ref="credentialsProvider"/> 
    </bean> 

    <bean id="httpClient" factory-bean="httpClientBuilder" 
     factory-method="build" /> 

    <bean id="requestFactory" factory-bean="httpComponentsClientHttpRequestFactory"> 
     <property name="defaultHttpClient" ref="httpClient"/> 
    </bean> 

    <bean id="bufferingRequestFactory" factory-bean="bufferingClientHttpRequestFactory"> 
     <property name="defaultRequestFactory" ref="requestFactory"/> 
    </bean> 

    <bean id="bufferingClientHttpRequestFactory" class="org.springframework.http.client.BufferingClientHttpRequestFactory"/> 

    <bean id="twRestTemplate" class="org.springframework.web.client.RestTemplate"> 
     <constructor-arg> 
      <ref bean="bufferingRequestFactory" /> 
     </constructor-arg> 
     <property name="errorHandler" ref="customErrorHandler" /> 
    </bean> 

とcloseableHttpClientでタイムアウト管理のための要求コンフィギュレータ:私はこのコードを書きました。私はこのBeanをHttpComponentClientHttpRequestFactoryに入れてからBufferingRequestFactoryに入れ、最後にRestTemplateに入れました。

しかし、実行時に、私はこのエラーを取得:

私が間違っている

WARN [localhost-startStop-1] [CloseAwareApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultTwProductSearchService' defined in class path resource [jkdsfj-spring.xml]: Cannot resolve reference to bean 'twNavigatorClientGateway' while setting bean property 'twNavigatorClientGateway'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultTwNavigatorClientGateway' defined in class path resource [jkdsfj-spring.xml]: Cannot resolve reference to bean 'twRestTemplate' while setting bean property 'twRestTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'twRestTemplate' defined in class path resource [joggrouptwconnector-spring.xml]: Cannot resolve reference to bean 'bufferingRequestFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bufferingRequestFactory' defined in class path resource [jkdsfj-spring.xml]: Instantiation of bean failed; nested exception is java.lang.IllegalStateException: No bean class specified on bean definition

+0

'BufferingClientHttpRequestFactory'が 'org.springframework.beans.factory.FactoryBean'を実装していない可能性がありますか? – Sashi

+0

確認します。 FactoryBeanクラスを実装していない場合、どうすればいいですか? – sharkbait

+0

はいBufferingClientHttpRequestFactoryはFactoryBeanを実装していません...(私は今何をすればいいのですか? – sharkbait

答えて

0

使用しているスプリングWebのバージョンが不明です。私はspring-web.4.xを見ました。 BufferingClientHttpRequestFactoryはコンストラクタ引数を受け取ります。だから、あなたは、コンストラクタ、引数

<bean id="bufferingRequestFactory" class="org.springframework.http.client.BufferingClientHttpRequestFactory"/> 
    <constructor-arg> 
     <ref bean="requestFactory" /> 
    </constructor-arg> 
</bean> 

あなたはHttpCompnentsClientHttpRequestFactoryのために同じことをしなければならないことを利用して工場出荷時に豆なしで1を作成することができます。

+0

ありがとうございます! – sharkbait

関連する問題