公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
最近发现越来越多的网友再使用 WebFlux,本文介绍几个 Flux 和 Mono 常用的方法。
在 Reactor 中,数据流发布者(Publisher)由 Flux 和 Mono 两个类表示,它们都提供了丰富的操作符(operator)。一个 Flux 对象代表一个包含0个或多个(0..N)元素的响应式序列,而一个 Mono 对象代表一个包含0或一个(0..1)元素的结果。这是它们两者之间最大的区别。
它们也有一些相同的方法用于构建数据流,下面简单列举几例。
用 just 创建数据流
Flux.just(520, 996, 997, 1024, 250, 888);
Mono.just(996);
基于数组创建数据流
Integer[] array = new Integer[]{520, 996, 997, 1024, 250, 888};
Flux.fromArray(array);
基于集合创建数据流
Integer[] array = new Integer[]{520, 996, 997, 1024, 250, 888};
List<Integer> list = Arrays.asList(array);
Flux.fromIterable(list);
基于 Stream 创建数据流
Integer[] array = new Integer[]{1, 2, 3, 4, 5, 6};
List<Integer> list = Arrays.asList(array);
Stream<Integer> stream = list.stream();
Flux.fromStream(stream);
Flux 和 Mono 的数据信号
Flux 和 Mono 都可以发出三种数据信号,上文中提到元素值、错误信号和完成信号三者并不是要完全具备的,下面就给出几种情况:
// 只有完成信号的空数据流
Flux.just();
Flux.empty();
Mono.empty();
Mono.justOrEmpty(Optional.empty());
// 只有错误信号的数据流
Flux.error(new Exception("some error"));
Mono.error(new Exception("some error"));
Flux 的一些特性导致它在封装一些自定义消息体的时候比较困难!
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » WebFlux 之 Flux 和 Mono 常用方法总结