gpt4 book ai didi

java - Spring Webflux : Controller return Mono> vs Mono

转载 作者:行者123 更新时间:2023-12-04 12:54:06 39 4
gpt4 key购买 nike

关于我在 Spring Webflux 中看到的一些返回类型的小问题。
在许多示例中,如在线教程,Spring Webflux 项目的其余 Web Controller 将返回 MyPojo 的 Mono Mono<MyPojo>就像是

    public Mono<MyPojo> monoPojo(String parameter) {
return WebClient.create("http://...").get().retrieve().bodyToMono(MyPojo.class)
.map(oneMyPojo -> unregisterRepository.insert(oneMyPojo))
;
}
但我也遇到了它返回响应实体的项目,MyPojo 的响应实体的 Mono Mono<ResponseEntity<MyPojo>> :
    public Mono<ResponseEntity<MyPojo>> monoResponseEntityPojo(String parameter) {
return WebClient.create("http://...").get().retrieve().bodyToMono(MyPojo.class)
.map(oneMyPojo -> unregisterRepository.insert(oneMyPojo))
.map(ResponseEntity::ok)
;
}
我很难理解 Mono 的使用。
请问这个 Mono 可以给 Mono 带来什么样的好处?
谢谢

最佳答案

让我们澄清一些事情
一个 ResponseEntity<T>来自 org.springframework.http包同时一个 ServerResponse来自 org.springframework.web.reactive.function.server包裹。
这应该作为开始应该给您提示何时使用什么,以及在哪里。
但简而言之,您可以通过两种方式使用 webflux,或者使用老式 @RestController注释,每个路径都有带注释的函数。这是常规 servlet spring web 和 webflux 异步事件驱动编程之间的一种“向后兼容模式”。ResponseEntities从旧 spring-web 返回而如果您选择使用存在于 webflux 中的功能端点,则需要返回 ServerResponses .
如果您查看类的代码,您会发现它们的某些部分相同,但其他部分不同,尤其是它们如何存储主体和序列化主体。Handler functionsFilter functions在 webflux 中仅适用于 ServerResponses .
现在回答您的问题,返回 Mono<ResponseEntity<T>Mono<T> .
好吧,这一切都归结为你有多懒。
如果您返回 Mono<T>该框架将尝试找出您在 Mono 中拥有的内容类型。 ,然后创建一个 ResponseEntity因此。因此,如果您将其序列化为 json,它将设置 content-type为您,并将状态通常设置为 200 OK如果您愿意,您可以构建您的 ResponseEntity完全自定义,并返回任何状态代码、任何正文和任何标题等。
所以归根结底是你有多懒,你想让框架为你做多少,你想要明确地做多少,然后自己输入所有内容,或自定义。
我,我很懒,我只是返回一些有用的东西。

关于java - Spring Webflux : Controller return Mono<ResponseEntity<MyPojo>> vs Mono<MyPojo>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69080915/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com