每当我在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
并没有错。