gpt4 book ai didi

java - 将相同的 RestTemplate 的 ObjectMapper 用于独立的 ObjectMapper

转载 作者:行者123 更新时间:2023-12-02 00:48:17 26 4
gpt4 key购买 nike

这是我的设置:

带有自定义 MessageConverterObjectMapperRestTemplate,它具有一些反序列化功能和问题处理程序 (Jackson Fasterxml 2.8.9)。 RestTemplate 还有一个自定义 ResponseErrorHandler

在使用 RestTemplate 进行 REST 调用期间,如果响应状态需要由 ResponseErrorHandler 处理,我可能必须解析流主体并将其映射到对象。

我想知道,如果我可以使我的ObjectMapper成为一个bean(@Bean/@Qualifer),我是否可以使用在 RestTemplateObjectMapper 中添加此单例 bean,并将其作为依赖项注入(inject)相同 RestTemplate响应错误处理程序?这样安全吗?

我想要这样做的原因是,在数据绑定(bind)方面,所有反序列化功能和问题处理程序都应该相同 - 无论是发生在 RestTemplate 数据提取机制内部还是在响应时body 需要在 ResponseErrorHandler#handlerError() 期间映射。

最佳答案

定义对象映射器和 RestTemplate bean。

或者在每次创建时手动使用 RestTemplate。

请记住将该转换器添加为列表中的第一个转换器。

@Bean
public RestTemplate restTemplate() {
RestTemplate rest = new RestTemplate();
// Add the object mapper as first instance in list for eager discovery
rest.getMessageConverters().add(0, jacksonConverter());
return rest;
}

@Bean
public HttpMessageConverter jacksonConverter() {
MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();
converter.setObjectMapper(objectMapper());
return converter;
}

@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}

关于java - 将相同的 RestTemplate 的 ObjectMapper 用于独立的 ObjectMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57881301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com