如何配置SpringTemplate的HTTP消息转换器及默认支持类型?
在Spring开发中,RestTemplate的配置绕不开消息转换器(HttpMessageConverter)的设置——它决定了客户端如何解析请求和响应的数据格式。下面通过一个完整的示例和一张默认支持类型表,把常见的配置要点梳理清楚。 spring template配置示例 @Bean publi
在Spring开发中,RestTemplate的配置绕不开消息转换器(HttpMessageConverter)的设置——它决定了客户端如何解析请求和响应的数据格式。下面通过一个完整的示例和一张默认支持类型表,把常见的配置要点梳理清楚。
spring template配置示例
@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内置了多种消息转换器,了解它们各自支持的Ja va类型和MediaType,能帮我们快速定位响应解析失败的原因。下面是完整的对应关系:
| 类名 | 支持的Ja vaType | 支持的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 |
| Ja vaSerializationConverter | Serializable | x-ja va-serialization;charset=UTF-8 |
| FastJsonHttpMessageConverter | Object | */* |
总结
以上配置示例和默认类型表,覆盖了RestTemplate自定义消息转换器时的常见做法。实际开发中,根据接口返回的Content-Type,灵活选择或组合这些转换器,可以有效避免解析异常,让HTTP调用更稳定。

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















