Reactor响应式编程(Mono)

(先写目标:不要求自己会写,只要几个常见的写法自己能看明白不耽误查资料就行了,看这个是为了学过滤器里面的那些东西。)

1. 和原来的阻塞式编程的对应关系

返回值,原来返回List<xxxx>的地方变成Flux<xxxx>,原来返回单个对象的地方变成Mono<xxxx>。
Flux就是List的一种变式,Mono表示单个对象。

  1. 由于WebFlux 是响应式的, 所以从DAO 到Service 再到 Controller ,层层之间都必须是响应式的,层与层之前数据交互处理都只能是Mono和Flux,这样就导致了很多阻塞式的框架无法使用,所以传统的关系型数据库框架(JDBC、JPA) 都无法使用(其实已经有了RxJDBC,但是要你去直接操作JDBC,太麻烦了)。
    (只要跟数据库相关的,基本都没有办法搞响应了)

3. Mono的三个阶段

(由于Mono和Flux这两个意思差不多,所以只针对于Mono就可以了)

(1) Mono创建

首先是Mono.just(),直接由这个对象构造出一个Mono。
然后Mono.fromRunnable(),用一个线程来构建一个Mono。

(2) Mono中间处理阶段

flatMap(把一个Mono处理一下变成另一个Mono,意思是这后面可以接着加点什么什么,继续链式处理)
Map(这个Mono直接就变成了普通对象,后面接不上了)
then(这个只是时间上的先后,并不是逻辑上的处理先后,就是then处理前后并不是一个变量,then接收一个变量,然后then前面处理的那个就结束了,后面开始处理then接收的这个变量)

(3) Mono结束

这个基本不用你管,你只要返回一个Mono对象,Spring自动就帮你处理后续的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容