开发

Reactor响应式编程(Mono)

2019-12-11  本文已影响0人  榷奕

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

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自动就帮你处理后续的。

上一篇下一篇

猜你喜欢

热点阅读