spring5——2.webflux,响应式编程,执行流程及核心API

什么是响应式编程

在计算机中,响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

观察者模式

java8及其之前提供了观察者模式的两个类,Observer和Observable(为什么说他是伪响应式编程)

代码演示
public class ObserverDemo extends Observable {
 public static void main(String[] args) {
 ObserverDemo observer = new ObserverDemo();
 //添加观察者
 observer.addObserver((o,arg)->{
 System.out.println("发生变化");
 });
 observer.addObserver((o,arg)->{
 System.out.println("手动被观察者通知,准备改变");
 });
 observer.setChanged(); //数据变化
 observer.notifyObservers(); //通知
 } }

java9及以后版本提供了,Flow类(subcribe订阅,publish发布)

Reactor实现 响应式编程

满足Reactive规范的架构
Reactor有两个核心类,mono和flux,这两个类都实现了Publisher,提供了丰富的操作符。Flux实现发布者,返回n个元素;Mono实现发布者,返回一个或0个元素。
Flux和Mono都是数据流的发布者,使用Flux和Mono都可以发出三种数据信号(元素值,错误信号,完成信号)(错误信号和完成信号都代表终止信号,错误信号终止数据流时火把错误信息传递给订阅者)

代码演示Flux和Mono

第一步,引入依赖

<dependency>
	<groupId>io.projectreactor</groupId>
	<artifactId>reactor-core</artifactId>
	<version>3.1.5.RELEASE</version>
</dependency>

TestReactor

//生成Reactor规范的对象
Flux.just(var ... args);
Mono.just(var arg);

Flux.fromArray(array);

Flux.fromStream(stream);

Flux.fromIterable(collection);

数据流,三种数据信号(元素值,错误信号,完成信号)特点
  • 错误信号和完成信号只能存在一个。
  • 没有元素值,表示这个流是空数据流
  • 没有终止信号,表示这个流是无限数据流
  • 操作符只用于加工数据(就是方法,map(多个元素映射为新的多个元素),flatMap(多个元素映射(合并)为一个流))

数据流订阅后才会执行。

springwebflux执行流程和核心API

springwebflux基于Reactor,默认容器是Netty,Netty是高性能,NIO框架,异步非阻塞的框架。

SpringWebFlux执行过程

springwebflux核心控制器DispatcherHandler,实现了WebHandler

其他组件
HandlerMapping:通过客户端请求查询处理方法
HandlerAdapter:负责请求处理,实现具体业务方法
HandlerResultHandler:负责响应结果,处理结果

实现函数式编程API(RouterFunction,HandlerFunction)

RouterFunction:(路由处理:处理请求,找到方法)
HandlerFunction:(函数处理:处理请求,响应函数)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值