控制器是否应该将集合包装到通量中



每当我在spring-webflux控制器中有一个需要返回的对象集合时,我应该返回一个普通集合还是一个flux?

现在我使用普通集合:

@GetMapping("/)
fun getData(): List<DomainObject> {
return inmemorycache.getAll()
}

只是想知道如果我把它包裹在通量中,它是否会有所不同。代码内部没有异步边界,所有内容都已经在内存中了。你能给我指一下澄清这一点的文件吗?

每当我在spring-webflux控制器中有一个需要返回的对象集合时,我应该返回一个普通集合还是一个flux?

您在这里声明的选项有点奇怪。如果你没有使用反应式堆栈,那么你唯一明智的选择就是标准集合。你不会把它包装成一个反应型,这毫无意义,只会让人困惑。

然而,如果您使用的是Webflux,这意味着一个反应堆栈,那么您的选择可能会返回Mono<List<DomainObject>>Flux<DomainObject>。(您不能返回标准集合,否则您将不得不阻止。(

简单的答案是,在大多数情况下,您几乎肯定想要Mono<List<DomainObject>>而不是Flux<DomainObject>

Flux是0到n个值的流,其可以结束也可以不结束,并且在每个元素之间可以具有任意时间。它通常以";换行符分隔的JSON";格式或类似格式,通过保持打开的连接,并在数据可用时传输数据。典型的应用程序可能包括订阅消息队列,通过网络套接字向浏览器传递即时消息(例如(

另一方面,如果您有一个标准的值列表,希望一次性返回到客户端,那么Mono<List<DomainObject>就更有意义了。它是一个一次性交付的值(因此Mono(,通常作为标准请求/响应模型的一部分交付,其中响应将是一个包含所述列表(当然还有您想要添加的任何其他属性(的标准JSON对象;正常的";方法,并且如果您使用通量上游作为处理的一部分,那么在其上调用collectList()将其转换为Mono并没有错。

最新更新