Java Spring Boot自动配置的Jackson ObjectMapper默认情况下不用于WebFlux WebClient

Java Spring Boot自动配置的Jackson ObjectMapper默认情况下不用于WebFlux WebClient,java,spring,spring-boot,jackson,spring-webflux,Java,Spring,Spring Boot,Jackson,Spring Webflux,在我的Spring Boot应用程序中,我使用反应式WebFlux WebClient从SSE(服务器发送事件)端点检索流式JSON数据。通过在Spring Boot中设置配置选项(如Spring.Jackson.deserialization.read date timestamps as nanoseconds=false)来修改默认的自动配置Jackson ObjectMapper行为(如建议的那样),对WebFlux WebClient没有影响。我还尝试了本文中概述的其他建议,如为Web

在我的Spring Boot应用程序中,我使用反应式WebFlux WebClient从SSE(服务器发送事件)端点检索流式JSON数据。通过在Spring Boot中设置配置选项(如
Spring.Jackson.deserialization.read date timestamps as nanoseconds=false)来修改默认的自动配置Jackson ObjectMapper行为(如建议的那样),对WebFlux WebClient没有影响。我还尝试了本文中概述的其他建议,如为WebFlux配置创建自定义bean,但没有帮助,配置仍然没有被获取。

在花了相当长的时间调试Spring WebFlux/Jackson库代码后,我终于找到了解决问题的提示,查看反应式WebFlux WebClient。要使WebClient使用默认的自动配置Jackson ObjectMapper,需要一些自定义管道。解决方案是在创建WebClient的新实例时,配置用于处理服务器发送事件的默认解码器。以下是示例代码:

@Component
public class MarketDataFetcher implements CommandLineRunner {

    // ...

    private final WebClient webClient;

    public MarketDataFetcher(ObjectMapper objectMapper) {
        webClient = createWebClient(objectMapper);
    }

    private WebClient createWebClient(ObjectMapper objectMapper) {
        return WebClient.builder()
                .codecs(configurer -> configurer.defaultCodecs()
                        .serverSentEventDecoder(new Jackson2JsonDecoder(objectMapper)))
                .baseUrl(BASE_URL)
                .build();
    }
}
ObjectMapper
由Spring自动注入,因此不需要
@Autowired
注释


如果能在正式文件中以某种方式使这一点更加明确,肯定会有所帮助。希望这个答案对面临类似问题的人有用

在这件事上也提出了类似的问题->