Spring webflux 控制器:使用 POJO 还是使用 Mono?
Spring webflux controller: consuming POJO vs Mono?
在控制器中我可以写:
fun update(@RequestBody myPojo: MyPojo): Mono<Void>
或
fun update(@RequestBody myPojo: Mono<MyPojo>): Mono<Void>
有什么区别吗? body 解析会在不同的线程中完成吗?在第一种情况下,我会阻塞主反应器线程直到 myPojo
被解析吗?
两者之间没有明显的运行时差异;在第一种情况下,Spring 将解包传入的 Mono
,但解码仍将异步进行。
唯一的区别是,如果没有 Mono
类型作为参数,您将无法对其使用 Reactor 运算符。所以这实际上是关于您的控制器处理程序需要实现的目标。
在控制器中我可以写:
fun update(@RequestBody myPojo: MyPojo): Mono<Void>
或
fun update(@RequestBody myPojo: Mono<MyPojo>): Mono<Void>
有什么区别吗? body 解析会在不同的线程中完成吗?在第一种情况下,我会阻塞主反应器线程直到 myPojo
被解析吗?
两者之间没有明显的运行时差异;在第一种情况下,Spring 将解包传入的 Mono
,但解码仍将异步进行。
唯一的区别是,如果没有 Mono
类型作为参数,您将无法对其使用 Reactor 运算符。所以这实际上是关于您的控制器处理程序需要实现的目标。