首页 > 其他分享 >初识Spring WebFlux

初识Spring WebFlux

时间:2024-12-22 18:27:28浏览次数:6  
标签:Spring 代码 WebFlux Flux 初识 操作 执行

这几天在学习Spring相关的知识,因为市场都在用它,所以不得不学它。当学习到Spring WebFlux这一章节的时候,我总是云里雾里,无法根据书本中的知识在我脑子里形成对于Spring WebFlux的基本面貌。

是的,我学了两天,却还没有弄明白,Spring WebFlux到底是什么。

可是,我们往往平庸是因为我们对于一个问题太想要结果,而伟大的作品总是在悄无声息中慢慢形成。在我的耐心学习下,终于算是看到了它的轮廓。

首先要知道什么是Spring WebFlux,我们可以从Spring MVC来谈起。MVC是一种实时返回结果的系统,当我们用Spring MVC来安装项目的时候,意味着,所有的请求,不管是post()、get()、delete()还是put()也好,在查询数据或者是操作数据之后,从控制器到数据库Repository都是整个实时返回的,我们称之为阻塞的以及反应式的,即,在前面的代码没有完全执行完成以前,后面的代码需要一直等到,直到前面的代码拿到结果,后面的代码才会执行。

进入到Spring WebFlux之后,一切变了。我在刚学习Spring WebFlux时,一直觉得它很像java8中对于流的操作,像在什么地方呢?就是它也是惰性执行的,即在终端操作出发之前,流的中间不会被触发,意味着,如果没有终端操作,中间操作的代码不会被执行。这和普通的代码是不是不同? 普通的代码执行过程时是从前往后执行,后面的代码执行时,前面的代码一定是执行完了的。那么,Spring WebFlux是不是也是这样呢?是的,我们在拿到Flux或者Mono(为了节省时间,后面只说Flux,因为它们两个很像)时,需要进行一个subscribe操作,即,意味着,只有调用Flux的subscribe方法时,你所定义的Flux或者是返回的Flux的方法才会执行。所以,这一点就像java8对于流的操作一致。另外,我们还会有一个疑问,如果我们在操作Flux时,如果代码执行有误,比如,在正常MVC中,我们可以加异常捕获处理,进行错误的提示,那,进入到Spring WebFlux之后,会不会就不支持这个功能呢? 我想说的是,多虑的,在subscribe操作时,可以接受多个consummer(这下知道为什么说Spring WebFlux支持函数式编程风格了吧),其中第二个consumer就是针对错误的提示,以便在触发流的操作时,如果上游有报错的情况下,可以手动捕获并处理。同时,最重要的一点时,这个调用subscribe的地方可以是在你想要的地方进行使用,意味着,只有在消费者准备好消费流的时候,流的处理才会进行触发,而且,触发的过程完全是异步执行,主线程不会等待你处理完成之后才执行后面的代码。最后,相比较于java8中对于Stream的操作不同的是,Spring WebFlux支持背压机制,即,消费端可以决定要多少元素。不会消费全部元素。

所以,这就是能理解为什么说Spring WebFlux是函数式的、惰性的、反应式的了吧。

希望大家能够多多留言,我们一起进步、学习!

标签:Spring,代码,WebFlux,Flux,初识,操作,执行
From: https://blog.csdn.net/m0_72897587/article/details/144649820

相关文章

  • springboot-Java搭建的后端服务器返回前端请求结果
    访问spring.io,在上方的projects找到springInitializr,配置如下:点击下方的GENERATE下载。解压到你的workspace文件夹,然后将该位置复制,IDEA中点击左上角->打开,粘贴文件地址,选中springboottest根目录,确定。此时点信任,信任该文件夹,打开新窗口。还是左上角->setting,搜索Maven,配置......
  • 【Spring事务】深入浅出Spring事务从原理到源码
    什么是事务保证业务操作完整性的一种数据库机制(driver驱动)事务特定ACIDA原子性(多次操作要不一起成功要不一起失败(部分失败savepoint))C一致性(事务开始时数据状态,事务结束是数据状态一致)I隔离性(多个事务不能互相影响,做到隔离)D持久性(事务操作的结果,永......
  • springboot毕设网上评教系统论文+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的高速发展,教育领域也在不断进行信息化变革。传统的评教方式往往依赖于纸质问卷等形式,存在诸多弊端,例如数据收集和统计效率低下、信......
  • springboot毕设理发店会员管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在现代社会,理发店行业竞争日益激烈。随着人们生活水平和消费观念的转变,消费者对于理发服务的要求不仅仅局限于剪发本身,更包括个性化的服务体验、......
  • springboot毕设 智慧医疗系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,智慧医疗系统已成为现代医疗体系中的重要组成部分。近年来,医疗资源的紧张与民众健康需求的日益增长之间的矛盾日益凸显,传统医......
  • springboot毕设 智能热度分析和自媒体推送平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和社交媒体的广泛普及,自媒体已成为信息传播的重要渠道。每天,海量的文章、图片和视频等内容在各大自媒体平台上发布,用户面对......
  • springboot毕设 影视周边电商平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着影视产业的蓬勃发展,影视作品的热度不断攀升,带动了相关衍生品市场的快速增长。影视周边产品作为连接影视作品与观众的桥梁,不仅丰富了观众的文化消......
  • springboot毕设 月嫂服务管理系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代家庭对母婴护理需求的日益增长,月嫂服务已成为众多新手父母在迎接新生儿到来时的必备选择。然而,传统的月嫂服务模式往往依赖于口碑推荐或中介......
  • Java毕设项目:基于Springboot助农农产品销售平台系统设计与实现开题报告
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • Springmvc进一步学习(springmvc-mybatis):跳转不经过视图解析器、controller如何保存数
    上一章的springmvc回顾内容:1.springmvc框架:主要作用:处理客户的请求,并处理数据,以及响应客户。2.springmvc搭建流程:  [1]引入springmvc依赖。spring-webmvc  [2]编写springmvc配置文件。   1.包扫描<context:component-scanbasepackage=""/>   ......