我在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.MyHttpMessageConverter
和org.springframework.http.converter.FormHttpMessageConverter
没有跟踪。
我正在使用Spring的4.3.1.RELEASE版本。
如何使messageConverters注册成为可能?
提前致谢。
答案 0 :(得分:0)
我找到了解决方案。
由于我正在使用Spring Integration <int-http:outbound-gateway>
组件,因此我需要在出站网关中添加属性"rest-template"
。
所以,工作解决方案是我在上面发布的(1),与此配置一起:
<int-http:outbound-gateway rest-template="restTemplate" ... />
否则,它将被用作默认的rest-template(没有自定义的messageConverters)。