Reactor响应式编程(Mono)珊瑚摆件
(先写⽬标:不要求⾃⼰会写,只要⼏个常见的写法⾃⼰能看明⽩不耽误查资料就⾏了,看这个是为了学过滤器⾥⾯的那些东西。)
1. 和原来的阻塞式编程的对应关系
返回值,原来返回List<xxxx>的地⽅变成Flux<xxxx>,原来返回单个对象的地⽅变成Mono<xxxx>。
英语基础模块Flux就是List的⼀种变式,Mono表⽰单个对象。
2. 由于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⾃动就帮你处理后续的。
巴松错