下面是我的设置:
一个带有自定义RestTemplate的ObjectMapper,具有一些反序列化特性和问题处理程序(Jackson 2.8.9),RestTemplate还有一个自定义ResponseErrorHandler。
在使用RestTemplate进行REST调用期间,如果响应状态需要由ResponseErrorHandler处理,我可能必须解析流体并将其映射到对象。
我在想,如果我能让我的ObjectMapper成为一个bean (@Bean/@Qualifer),我是否能够在RestTemplate的ObjectMapper中使用这个单例bean,并将它作为依赖注入到相同的RestTemplate的ResponseErrorHandler中?这是安全的吗?
我想这样做的原因是,当涉及数据绑定时,所有反序列化特性和问题处理程序都应该是相同的--无论是发生在RestTemplate数据提取机制中还是在ResponseErrorHandler#handlerError()期间需要映射响应体。
发布于 2019-09-11 02:56:25
定义对象映射器和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();
}https://stackoverflow.com/questions/57881301
复制相似问题