学生と登録済みのクラスの詳細を返す Web サービスがあります。
{
"name": "student-name",
"classes": [
{
"className": "reactor-101",
"day": "Tuesday"
},
{
"className": "reactor-102",
"day": "Friday"
}
]
}
このクラスの 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;
}
}
学生を取得するための主な REST コントローラー ロジックは次のとおりです。
Flux<StudentClass> studentClassFlux = studentClassRepository.getStudentClass(studentName);
return Mono.just(new Student(studentName, studentClassFlux));
これの問題は、REST 呼び出しを行った後に次の出力が得られることです。
{
"name": "student-name",
"classes": {
"prefetch": 32,
"scanAvailable": true
}
}
フラックス要求をブロックして完了し、出力をリストに変換することで、目的の出力を実現できます。
List<StudentClass> studentClassList = studentClassRepository.getStudentClass(studentName)..toStream().collect(Collectors.toList());
return Mono.just(new Student(studentName, studentClassList)); // Change the Student#classes from flux to list
私はリアクティブプログラミングが初めてです。Flux & Mono を使用して目的の出力を得る正しい方法は何ですか?