webflux最佳做法

时间:2018-06-27 16:20:02

标签: spring spring-mvc reactive-programming spring-webflux reactive

例如,我从处理程序函数中处理ServerRequest:

  fun someHandler(req: ServerRequest): Mono<ServerResponse> {
    val v1: Mono<T1> req.principal()
        .flatMat { ... }
    val v2: Mono<T2> req.bodyToMono(SomeDTO::class.java)
         .flatMap { ... }
    ...

   someServive.m(v1, v2, ..., v5)
}

我有五个monos以及用解析值调用某种方法的东西。我可以在zip之上使用zip over zip,然后调用方法:

v1.zip(v2).zip(v3).zip(v4).zip(v5)
   .map { someService.m(it.t1.t1.t1.t1, it.t1.t1.t2, ....) (something like that)

该代码不可读。我怎样才能很好地解决n个变量?我有一个选择(我也不喜欢),将所有内容嵌套:

 DTOWithV1, DTOWithV1AndV2 .... DTOWithAllFields

 v1.map { r1 -> v2.map { r2 -> .... v5.map { r5 -> someService.(r1, r2, ..., r5 } } }

0 个答案:

没有答案