使用RestTemplate时如何配置内部Jackson映射器?

使用RestTemplate时如何配置内部Jackson映射器?,第1张

使用RestTemplate时如何配置内部Jackson映射器?

默认

RestTemplate
构造函数注册一组
HttpMessageConverter

this.messageConverters.add(new ByteArrayHttpMessageConverter());this.messageConverters.add(new StringHttpMessageConverter());this.messageConverters.add(new ResourceHttpMessageConverter());this.messageConverters.add(new SourceHttpMessageConverter());this.messageConverters.add(new XmlAwareFormHttpMessageConverter());if (jaxb2Present) {    this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());}if (jacksonPresent) {    this.messageConverters.add(new MappingJacksonHttpMessageConverter());}if (romePresent) {    this.messageConverters.add(new AtomFeedHttpMessageConverter());    this.messageConverters.add(new RssChannelHttpMessageConverter());}

MappingJacksonHttpMessageConverter
轮流,造成
ObjectMapper
直接实例。你可以找到该转换器并替换
ObjectMapper
或注册一个新的转换器。这应该工作:

@Beanpublic RestOperations restOperations() {    RestTemplate rest = new RestTemplate();    //this is crucial!    rest.getMessageConverters().add(0, mappingJacksonHttpMessageConverter());    return rest;}@Beanpublic MappingJacksonHttpMessageConverter mappingJacksonHttpMessageConverter() {    MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();    converter.setObjectMapper(myObjectMapper());    return converter;}@Beanpublic ObjectMapper myObjectMapper() {    //your custom ObjectMapper here}

在XML中,遵循以下原则:

<bean id="restOperations" >    <property name="messageConverters">        <util:list> <bean /> <bean /> <bean /> <bean /> <bean /> <bean /> <bean >     <property name="objectMapper" ref="customObjectMapper"/> </bean>        </util:list>    </property></bean><bean id="customObjectMapper" />

请注意,转换并不是真正的1:1-我必须显式地

messageConverters
以XML 创建列表,而采用
@Configuration
这种方法,我可以引用现有列表并直接对其进行修改。但这应该可行。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4985867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存