首页 > 解决方案 > 如何在 SpringBoot 1.5.x 中对 HttpMessageConverters 进行排序/排序/优先级

问题描述

我需要在我的 spring-boot 1.5.12 服务之一中支持 XML 和 JSON 以及对类路径的以下依赖项

我创建了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 来获取所有现有转换器。

请向我建议任何其他更好的解决问题的方法。

标签: javaspringspring-bootcontent-negotiationjackson-dataformat-xml

解决方案


推荐阅读