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

#1楼 票数:0

在调试 Spring WebFlux/Jackson 库代码花费了相当长的时间后,我终于找到了解决问题的提示,查看了响应式 WebFlux WebClient 文档 需要一些自定义管道才能使 WebClient 使用默认的自动配置的 Jackson ObjectMapper。 解决方案是在创建 WebClient 的新实例时配置用于处理 Server-Sent Events 的默认解码器。 这是示例代码:

@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注解。

如果可以在官方文档中以某种方式更明确地说明这一点,那肯定会有所帮助。 希望这个答案对面临类似问题的人有用!

  ask by msilb translate from so

未解决问题?本站智能推荐:

3回复

使用 Jackson 和 WebClient 将 json 数组反序列化为对象

我在使用 Spring 反序列化 json 数组时遇到问题。 我有一个来自服务的 json 响应: 我使用来自 Spring WebFlux 的新 WebClient 获取此 json,代码如下: 账户订单列表 AccountOrder 是一个映射字段的简单 pojo。 实际上,当我
1回复

将Jackson配置为在Spring Boot 2.0.0.M1中“全局”使用SNAKE_CASE

我正在使用Spring Boot 2.0.0.M1 (因此是Spring 5.0.0.RC1 )。 我正在尝试对其进行配置,以利用PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE但到目前为止我还没有工作。 我试过了: 具有以
2回复

为什么使用Webflux进行弹簧启动测试会忽略自定义杰克逊模块

我正在使用Spring Boot 2.0.1和WebFlux路由器功能( 不是基于注释!)编写应用程序。 对于我的某些数据对象,我编写了扩展StdSerializer自定义序列化StdSerializer 。 这些我在SimpleModule注册,并将该模块作为Bean公开。 当我运行
1回复

Spring如何处理不同的JSON响应

我正在使用 Spring WebClient 发出 REST 请求。 我已经创建了 POJO 来存储 JSON 属性,但是有一个问题。 如果我使用的 API 上的某个词不存在,它会返回一个词数组 但是我的控制器需要一个特定的 Java 类。 我该如何处理? 我是 WebClient 的初学者,所
1回复

如何在Spring中修复JSON解码错误?

我正在通过REST发送一个User对象,该对象包含一组SimpleGrantedAuthority对象。 在接收方,我遇到一个例外: org.springframework.core.codec.DecodingException:JSON解码错误:无法构造org.springfra
1回复

尝试将 maven 依赖项从 spring-boot-starter-webflux 更新到 spring-webflux 时出现错误 UnsupportedMediaTypeException

因为我正在尝试从 Maven 中的spring-boot-starter-webflux更新spring-webflux依赖项。 我的工作代码开始给出错误,例如“ 从 : 变成: 低于错误: 注意:我正在为 POJO 尝试 Jackson 库并在其中使用构造函数。 可能是什么问题? 如
2回复

如何防止嵌入式netty服务器从spring-boot-starter-webflux开始?

我想使用Springs new reactive webflux扩展在客户端和服务器应用程序之间建立通信。 对于依赖管理,我使用gradle 。 我在服务器上以及客户端上的build.gradle文件基本上是: (应该注意的是2.0.0.BUILD- SNAPSHOT是一个移动目
1回复

@EnableResourceServer不适用于spring-webflux

我在http://start.spring.io创建了一个应用程序,指定了“ Reactive Web”和“ Security”。 然后,我构建并运行该应用程序而没有出现问题。 然后,将spring-security-oauth2-autoconfigure依赖项添加到pom中,并将@E