消息转换器

您可以通过重写 configureMessageConverters(), 在Java配置中设置要使用的 HttpMessageConverter 实例,替换默认使用的实例。您也可以通过重写 extendMessageConverters(), 在最后定制配置的消息转换器列表。

在 Infra App 应用程序中,WebMvcAutoConfiguration 除了默认转换器外,还会添加它检测到的任何 HttpMessageConverter Bean。或者,也可以使用 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()));
  }
}

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

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

它还自动注册以下知名模块(如果它们在类路径上被检测到):

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

其他有趣的 Jackson 模块包括: