Spring:RestTemplate messageConverters未注册

时间:2016-07-21 11:24:57

标签: spring spring-mvc spring-integration

我在messageConverters注册org.springframework.web.client.RestTemplate时遇到问题。

我尝试过(没有效果)两种解决方案:

1)在Spring配置中定义一个bean的restTemplate,包含我需要的所有转换器:

<bean id="restTemplate" name="restTemplate" class="org.springframework.web.client.RestTemplate" autowire-candidate="true">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
            <bean class="test.myApp.MyHttpMessageConverter" />
        </list>
    </property>
</bean>

2)<mvc:annotation-driven>标记中声明messageConverters:

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
        <bean class="test.myApp.MyHttpMessageConverter" />
    </mvc:message-converters>
</mvc:annotation-driven>

我还使用了属性register-defaults="true"

使用这两个解决方案时,restTemplate实例仅包含相同的6个默认转换器:

ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
AllEncompassingFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter

test.myApp.MyHttpMessageConverterorg.springframework.http.converter.FormHttpMessageConverter没有跟踪

我正在使用Spring的4.3.1.RELEASE版本。

如何使messageConverters注册成为可能?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

由于我正在使用Spring Integration <int-http:outbound-gateway>组件,因此我需要在出站网关中添加属性"rest-template"

所以,工作解决方案是我在上面发布的(1)与此配置一起

<int-http:outbound-gateway rest-template="restTemplate" ... />

否则,它将被用作默认的rest-template(没有自定义的messageConverters)。