栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

第一步,引入依赖


	io.projectreactor
	reactor-core
	3.1.5.RELEASE

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:(函数处理:处理请求,响应函数)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号