在Spring开发中,RestTemplate通过配置HttpMessageConverter决定数据格式解析,可自定义连接与读取超时,并配置Jackson转换器以支持text/plain类型,默认支持JSON、XML、表单等多种数据格式,提升HTTP通信的灵活性与扩展性。
在Spring开发中,RestTemplate的配置绕不开消息转换器(HttpMessageConverter)的设置——它决定了客户端如何解析请求和响应的数据格式。下面通过一个完整的示例和一张默认支持类型表,把常见的配置要点梳理清楚。
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(6000);// 设置建立连接超时时间 毫秒
requestFactory.setReadTimeout(6000);// 设置读取数据超时时间 毫秒
RestTemplate restTemplate = new RestTemplate(requestFactory);
// jackson配置
ObjectMapper objectMapper = new ObjectMapper();
// 配置如果被序列化的对象没有可访问的属性 不报错,返回一个空的bean,即{}
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// 创建json消息转换器
MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(objectMapper);
List mediaTypes = new ArrayList<>(jacksonConverter.getSupportedMediaTypes());
// 为json消息转换器新增直接text_plain类型 避免遇到响应体是json,而响应头是text/plain类型无法找到适合的解析
mediaTypes.add(MediaType.TEXT_PLAIN);
jacksonConverter.setSupportedMediaTypes(mediaTypes);
List> messageConverters = Arrays.asList(
new ByteArrayHttpMessageConverter(),
new StringHttpMessageConverter(Charset.forName("utf-8")),
new ResourceHttpMessageConverter(),
new SourceHttpMessageConverter<>(),
new FormHttpMessageConverter(),
jacksonConverter
);
restTemplate.setMessageConverters(messageConverters);
return restTemplate;
}
这段代码展示了几个关键点:超时时间设置、Jackson序列化配置(遇到空Bean时不抛异常)、以及为JSON转换器额外支持text/plain类型——这在一些接口返回JSON但Content-Type为text/plain的场景下非常实用。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
Spring内置了多种消息转换器,了解它们各自支持的Java类型和MediaType,能帮我们快速定位响应解析失败的原因。下面是完整的对应关系:
| 类名 | 支持的Java Type | 支持的MediaType |
|---|---|---|
| ByteArrayHttpMessageConverter | byte[] | application/octet-stream, */* |
| StringHttpMessageConverter | String | text/plain, */* |
| ResourceHttpMessageConverter | Resource | */* |
| SourceHttpMessageConverter | Source | application/xml, text/xml, application/*+xml |
| AllEncompassingFormHttpMessageConverter | Map | application/x-www-form-urlencoded, multipart/form-data |
| MappingJackson2HttpMessageConverter | Object | application/json, application/*+json |
| Jaxb2RootElementHttpMessageConverter | Object | application/xml, text/xml, application/*+xml |
| JavaSerializationConverter | Serializable | x-java-serialization;charset=UTF-8 |
| FastJsonHttpMessageConverter | Object | */* |
以上配置示例和默认类型表,覆盖了RestTemplate自定义消息转换器时的常见做法。实际开发中,根据接口返回的Content-Type,灵活选择或组合这些转换器,可以有效避免解析异常,让HTTP调用更稳定。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述