优秀的编程知识分享平台

网站首页 > 技术文章 正文

SpringWebFlux之Mono与Flux(webflux的mono详解api)

nanyue 2024-08-20 17:31:38 技术文章 6 ℃

前面一个文章学习了SpringWebFlux的实现, 其中有两个概念咱们没有细说,Flux和Mono。Reactor是Spring WebFlux的首选反应式编程库。 它提供Mono和Flux API类型来处理0..1和0..N的数据序列。

Mono

Mono 是一个发出(emit)0-1个元素的Publisher<T>,可以被onComplete信号或者onError信号所终止。

创建Mono有两种方法



  • 通过Mono静态方法创建:

empty():创建一个不包含任何元素,只发布结束消息的序列。

just():可以指定序列中包含的全部元素。创建出来的 Mono序列在发布这些元素之后会自动结束

justOrEmpty():从一个 Optional 对象或可能为 null 的对象中创建 Mono。只有 Optional 对象中包含值或对象不为 null 时,Mono 序列才产生对应的元素。

error(Throwable error):创建一个只包含错误消息的序列。

never():创建一个不包含任何消息通知的序列。

例:

Mono.justOrEmpty(userDao.findById(id));
  • 通过 create()方法来使用 MonoSink 来创建 Mono。
Mono.create(userMonoSink -> userMonoSink.success(userDao.save(user)));

Flux

Flux 是一个发出(emit)0-N个元素组成的异步序列的Publisher<T>,可以被onComplete信号或者onError信号所终止。在响应流规范中存在三种给下游消费者调用的方法 onNext, onComplete, 和onError


Tags:

最近发表
标签列表