小编K. *_*ari的帖子

如何正确地将 Flux 包裹在 Mono 对象中

我有一个网络服务,它返回学生和注册课程的详细信息。

{
  "name": "student-name",
  "classes": [
    {
      "className": "reactor-101",
      "day": "Tuesday"
    },
    {
      "className": "reactor-102",
      "day": "Friday"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

该类的 DTO 如下:

public class Student {
        private String name;
        private Flux<StudentClass> classes;
        @Data
        @AllArgsConstructor
        @JsonInclude(JsonInclude.Include.NON_DEFAULT)
        public static class StudentClass {
            private String className;
            private String day;
        }
    }
Run Code Online (Sandbox Code Playgroud)

获取学生的主要 REST 控制器逻辑如下:

Flux<StudentClass> studentClassFlux = studentClassRepository.getStudentClass(studentName);

return Mono.just(new Student(studentName, studentClassFlux));
Run Code Online (Sandbox Code Playgroud)

问题是,在进行 REST 调用后,我得到以下输出:

{
  "name": "student-name",
  "classes": {
    "prefetch": 32,
    "scanAvailable": true
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以通过阻止通量请求以完成所需的输出,然后将输出转换为列表来实现所需的输出。

List<StudentClass> studentClassList = studentClassRepository.getStudentClass(studentName)..toStream().collect(Collectors.toList());
return …
Run Code Online (Sandbox Code Playgroud)

project-reactor reactive-streams spring-webflux

5
推荐指数
1
解决办法
4400
查看次数