何时使用 Mono<List<Object>> 以及何时使用 Flux<Object> 用于 RestController 方法

Posted

技术标签:

【中文标题】何时使用 Mono<List<Object>> 以及何时使用 Flux<Object> 用于 RestController 方法【英文标题】:When to use Mono<List<Object>> and when Flux<Object> for RestController method 【发布时间】:2019-03-28 15:40:42 【问题描述】:

我正在使用带有 Reactor 的 Spring web-flux,但我不清楚 RestController 方法何时应该返回

Mono &lt;List&lt;Object&gt;&gt;Flux&lt;Object&gt; 时。

你能提供一些什么时候使用它们的例子吗?

【问题讨论】:

【参考方案1】:

Flux&lt;Object&gt; 表示新的Object 实例可以在任何时候以反应方式推送。使用Mono&lt;List&lt;Object&gt;&gt;,您将获得 1 次作为对象列表的值,但该列表永远不会改变。

另见Mono vs Flux in Reactive Stream

【讨论】:

因此,如果 Spring RestController 公开了普通 API,假设此 API 将公开项目列表(例如用户拥有的汽车),阅读您的回复我应该选择 Mono&lt;List&lt;Object&gt;&gt;而不是Flux&lt;Object&gt;,因为我只是在等待“1 次作为对象列表的值”。这是正确的吗? 你的问题的答案是:是的,没错。

以上是关于何时使用 Mono<List<Object>> 以及何时使用 Flux<Object> 用于 RestController 方法的主要内容,如果未能解决你的问题,请参考以下文章

android mono:使用 List<T> 而不是 ArrayAdapter 来使用 Contains 方法

如何从 WebFlux 中的 Mono<List<T>> 中提取内容以将其传递到调用链中

如何将 Mono<List<String>> 转换为 Flux<String>

Spring 5 新特性:函数式Web框架

Array 与 List<T>:何时使用哪个?

Reactor响应式编程(Mono)