RestClient 中的 ObjectMapper 未获取配置属性

问题描述 投票:0回答:1

在我的 Spring Boot 服务中,我使用

RestClient
执行 REST 调用。我想忽略请求主体中的空值,所以我设置了

spring:
  jackson:
    default-property-inclusion: "non_null"

在我的

application.yml
。但是,由于某种原因,该配置在
RestClient
ObjectMapper
中不受尊重。另一方面,当我将 Spring 自动配置的
ObjectMapper
注入到我的测试类中(用
@SpringBootTest
注释)时,我看到映射器按预期配置。
RestClient
选择与 Spring Boot 配置的不同的
ObjectMapper
的原因可能是什么?

一些注意事项:

  • 除了通过
    ObjectMapper
     之外,我不会以任何其他方式配置 
    application.yml
  • 我正在做
    RestClient.create()
    设置
    RestClient
  • 我不使用
    @EnableWebMvc
    (类似SO问题中通常的嫌疑人)
spring-boot jackson objectmapper
1个回答
0
投票

您至少需要使用

RestClient.create(restTemplate)
。您的
RestTemplate
需要配置您需要的
ObjectMapper

当你使用

RestClient.create()
时,它无法拾取弹簧配置的映射器,怎么可能呢?这是常规的 java 对象创建。

还有一些其他选项,例如:

RestClient.builder()
  .messageConverters(in -> {
    MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter();
    messageConverter.setPrettyPrint(false);
    messageConverter.setObjectMapper(objectMapper);
    in.add(jacksonConverter);
  })
.build();
© www.soinside.com 2019 - 2024. All rights reserved.