Mono<ServerResponse> 与 Mono<ResponseEntity<MyPojo>> 作为 Java Spring Webflux @Reques
Posted
技术标签:
【中文标题】Mono<ServerResponse> 与 Mono<ResponseEntity<MyPojo>> 作为 Java Spring Webflux @RequestMapping 中的返回类型【英文标题】:Mono<ServerResponse> vs Mono<ResponseEntity<MyPojo>> as return type in Java Spring Webflux @RequestMapping 【发布时间】:2021-03-25 10:11:32 【问题描述】:关于使用Mono<ServerResponse>
vs Mono<ResponseEntity<MyPojo>>
作为返回类型的小问题。
我看到了一些例子,有时,Mono<ServerResponse>
在 Spring Webflux 的功能路由中用作返回类型。
但也看到了一些例子,有时,Mono<ResponseEntity<MyPojo>>
被用作 Spring 功能路由中的返回类型。
此外,Mono<ResponseEntity<MyPojo>>
在@Controller 中使用的例子很多,@RequestMapping (Get, Post mapping etc...) 作为返回类型。
但也有少数例子返回Mono<ServerResponse>
。
请问,退货有什么区别?
【问题讨论】:
【参考方案1】:据我了解,它的缩写是 org.springframework.http.ResponseEntity
来自原始 Spring Mvc Framework 包,org.springframework.web.reactive.function.server.ServerResponse
来自 Spring Reactive 包。
响应式包具有“兼容性”模式,可让您使用向后兼容的 @RestController
注释,它们通常会像以前一样返回 ResponseEntity
。
没有兼容性功能的响应式包实现使用Router
和Handler
,通常返回ServerResponse
。有关 spring 的教程,请参阅 Building a Reactive RESTful Web Service。
另请参阅 Spring WebFlux 指南,章节 1.4. Annotated Controllers 了解兼容性反应方式,1.5. Functional Endpoints 了解功能方式。
如果您深入了解Annotated Controllers
代码,您会发现它使用了Functional Endpoints
代码。
【讨论】:
以上是关于Mono<ServerResponse> 与 Mono<ResponseEntity<MyPojo>> 作为 Java Spring Webflux @Reques的主要内容,如果未能解决你的问题,请参考以下文章
如果 Mono 为空,则创建未找到的 ServerResponse
Spring WebFlux - ServerResponse Jackson 序列化程序问题