zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    UVa 11991 Easy Problem from Rujia Liu?
    UVa 11995 I Can Guess the Data Structure!
    LA 3485 (积分 辛普森自适应法) Bridge
    LA 5009 (三分法求极值) Error Curves
    软帝学院:一万字的Java基础知识总结大全(实用)
    学java可以做些什么
    从零开始学习java一般需要多长时间?
    学习java需要英语很好吗?
    java的8种基本数据类型
    什么是java变量,java变量是什么
  • 原文地址:https://www.cnblogs.com/ding-dang/p/13390859.html
Copyright © 2011-2022 走看看