Spring Webflux

介绍

Webflux是 Spring5 添加新的用于 web 开发的模块,功能和 SpringMVC 类似,基于响应式编程出现的框架
SpringMVC是基于 Servlet 容器,Webflux 是一种异步非阻塞的框架,异步非阻塞的框架在 Servlet3.1 以后才支持,核心是基于 Reactor 的相关 API 实现的

异步非阻塞

异步和同步针对调用者,调用者发送请求,如果等着对方回应之后才去做其他事情就是同步,如果发送请求之后不等着对方回应就去做其他事情就是异步;
阻塞和非阻塞针对被调用者,被调用者收到请求之后,做完请求任务之后才给出反馈就是阻塞,收到请求之后马上给出反馈然后再去做事情就是非阻塞

Webflux的特点

  1. 非阻塞式:在有限资源下,提高系统吞吐量和伸缩性,以 Reactor 为基础实现响应式编程
  2. 函数式编程:Spring5 框架基于 java8,Webflux 使用 Java8 函数式编程方式实现路由请求

与Spring MVC的比较

Spring MVC or WebFlux

  1. 两个框架都可以使用注解方式,都运行在 Tomcat 等容器中
  2. SpringMVC 采用命令式编程,Webflux 采用异步响应式编程

响应式编程

  1. 响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便的表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播
    电子表格程序就是响应式编程的一个例子。单元格可以包含字面值或类似"=B1+C1"的公式,而包含公式的单元格的值会依据其他单元格的值的变化而变化
  2. 响应式编程操作中,Reactor 是满足 Reactive 规范框架
  3. Reactor 有两个核心类,Mono 和 Flux,这两个类实现接口 Publisher
    Flux 返回 N 个元素
    Mono 返回 0 或者 1 个元素
  4. Flux 和 Mono 都是数据流的发布者,使用 Flux 和 Mono 都可以发出三种数据信号: 元素值,错误信号,完成信号
    错误信号和完成信号都代表终止信号,终止信号用于告诉订阅者数据流结束了,错误信号终止数据流同时把错误信息传递给订阅者

使用案例

GitHub
Gitee

官方文档

Spring Webflux Docs

posted @ 2020-07-28 14:22  叮叮叮叮叮叮当  阅读(170)  评论(0编辑  收藏  举报