java - 如何在 SpringBoot 1.5.x 中对 HttpMessageConverters 进行排序/排序/优先级
问题描述
我需要在我的 spring-boot 1.5.12 服务之一中支持 XML 和 JSON 以及对类路径的以下依赖项
- 杰克逊-数据格式-xml
- jackson-json 依赖项(作为 spring-web 启动器的一部分提供)
我创建了MappingJackson2XmlHttpMessageConverter Bean 来支持 Jackson 本身的 XML(为了与 JSON 保持一致)
@Bean
public MappingJackson2XmlHttpMessageConverter xmlHttpConverter(ObjectMapper xmlMapper) {
MappingJackson2XmlHttpMessageConverter xmlConverter = new MappingJackson2XmlHttpMessageConverter();
xmlConverter.setObjectMapper(xmlMapper);
return xmlConverter;
}
@Bean
public ObjectMapper xmlMapper() {
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
xmlMapper.setSerializationInclusion(Include.NON_NULL);
return xmlMapper;
}
但由于我进行了这些更改,XML 在所有方面都优先于 JSON(RestTemplate 调用和服务/health和/info检查)
我在 RestTemplate 调用中添加了 Content-Type 标头,但是我们的 CI-CD Infra 调用了执行器端点,现在受到了影响,我想对转换器进行排序/排序,但更改太少,或者将 JSON 作为服务的默认 Content-Type。
我知道 /health.json 和 /info.json 有效,但我不能要求 Infra 团队更改他们对此服务的逻辑,
我在这里看到了官方文档,我喜欢这种方法,但我想知道如何通过注入而不是通过继承 WebMvcConfigureAdapter 来获取所有现有转换器。
请向我建议任何其他更好的解决问题的方法。
解决方案
推荐阅读
- video - ffmpeg 质量很差的 mp4 转换
- javascript - @hapi/joi 依赖的模块解析失败
- python - 如何保存终端中显示的所有旧值
- c++ - 使用 static_assert 确保模板参数只使用*最多*一次
- xml - 从 PowerShell 脚本创建 XML 输出文件
- sql - 用于检查存储过程是否存在的动态 SQL
- javascript - 如何切换声明的变量 slideIndex 以将其放入对象中?
- c# - 有没有一种方法可以在不显式使用对象名称的情况下隐式引用 has-a 关系中的对象?
- python - 当我给出一个包含两个不同形状的 ndarray 的列表时,np.array() 不起作用
- mysql - 如何从关系表中检索连接值