跳到主要内容

消息转换器

DeepSeek V3 中英对照 Message Converters

你可以通过重写 configureMessageConverters() 来设置 Java 配置中使用的 HttpMessageConverter 实例,从而替换默认使用的转换器。你也可以通过重写 extendMessageConverters() 在最后自定义已配置的消息转换器列表。

提示

在 Spring Boot 应用程序中,WebMvcAutoConfiguration 除了默认的转换器外,还会添加它检测到的任何 HttpMessageConverter bean。因此,在 Boot 应用程序中,建议使用 HttpMessageConverters 机制。或者,也可以使用 extendMessageConverters 在最后阶段修改消息转换器。

以下示例添加了 XML 和 Jackson JSON 转换器,并使用自定义的 ObjectMapper 替换默认的转换器:

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
.indentOutput(true)
.dateFormat(new SimpleDateFormat("yyyy-MM-dd"))
.modulesToInstall(new ParameterNamesModule());
converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
converters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build()));
}
}
java

在前面的示例中,Jackson2ObjectMapperBuilder 被用来为 MappingJackson2HttpMessageConverterMappingJackson2XmlHttpMessageConverter 创建一个通用的配置,启用了缩进、自定义日期格式,并注册了 jackson-module-parameter-names,该模块增加了对访问参数名称的支持(这是 Java 8 中添加的一个功能)。

此构建器按如下方式自定义 Jackson 的默认属性:

如果检测到类路径中存在以下众所周知的模块,它也会自动注册它们:

备注

启用 Jackson XML 支持的缩进功能除了需要 jackson-dataformat-xml 依赖外,还需要 woodstox-core-asl 依赖。

其他有趣的 Jackson 模块包括: