ams*_*ams 1 spring reactive-programming project-reactor reactive-streams spring-webflux
Reactor 3有2种主要数据类型,它们都是反应流发布者
reactor.core.publisher.Mono<T>reactor.core.publisher.Flux<T>我理解Mono是0或1个元素的流,而Flux是0或N个元素的流.
由于Mono和Flush都在实施,org.reactivestreams.Publisher<T>为什么我们需要两种类型,为什么不只是使用Flux来做所有事情?
想想在非反应世界中会发生什么:我们可以决定让所有函数返回List<T>,即使我们知道它们只返回一个元素.例:
public List<T> findAll() <-- looks ok
public List<T> findFirst() <-- seems strange?
public T findFirst() <-- better now?
Run Code Online (Sandbox Code Playgroud)
那么为什么我们不总是回来List<T>?因为有时我们使用List<T>简单的方法更方便T,这样就更容易让函数的用户理解期望的内容.
现在,如果我们将这些示例转换为反应世界,我们就会得到:
public List<T> findAll() --> public Flux<T> findAll()
public T findFirst() --> public Mono<T> findFirst()
Run Code Online (Sandbox Code Playgroud)
当然,我们可以一直使用Flux<T>,因为我们总是可以使用List<T>,但它是能够区分当有多个项目或只是一个只是更方便.
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |