(1)webFlux是 Spring5 添加的新模块,用于 web 的开发,功能和 SpringMVC 类似的,Webflux 使用 当前一种比较流程响应式编程出现的框架。
在spring5的jar包中和架构图中我们都可以看见
(2)使用传统 web 框架,比如 SpringMVC,这些基于 Servlet 容器,Webflux 是一种异步非阻塞的框架,
异步非阻塞的框架在 Servlet3.X以后才支持,核心是基于 Reactor 的API 实现的。
(3)异步与同步,阻塞与非阻塞的理解
这里做一个简单的通俗的解释:
1.异步和同步针对调用者,调用者发送请求,如果等着对方回应之后才去做其他事情就是同步,如果发送请求之后不等着对方回应就去做其他事情就是异步
2.阻塞和非阻塞针对被调用者,被调用者接受到请求之后,做完请求任务之后才给出反馈就是阻塞,接受到请求之后马上给出反馈然后再去做事情就是非阻塞
如果想深入理解并实践应用异步同步阻塞非阻塞等技术,可能会涉及到网络编程、socket、BIO、NIO、AIO、Netty等技术,大家可以学习之前讲的《网络编程系列课程》
(4)Webflux 特点:
(5)Webflux与SpringMVC的区别
具体的可以看后面的案例演示,可能会更好理解!
(6)总结(面试的时候很重要)
2.内部使用的是响应式编程,以Reactor库为基础,基于异步和事件驱动,可以让我们在不扩充硬件资源的前提下,提升系统的吞吐量和伸缩性。
3.不能使接口的响应时间缩短,它仅仅能够提升吞吐量和伸缩性。
2.IO 密集型包括:磁盘IO密集型, 网络IO密集型,
微服务网关就属于网络 IO 密集型,使用异步非阻塞式编程模型,能够显著地提升网关对下游服务转发的吞吐量。
但是 WebFlux 主要还是应用在异步非阻塞编程模型,而 Spring MVC 是同步阻塞的,
如果你目前在 Spring MVC 框架中大量使用非同步方案,那么,WebFlux 才是你想要的,否则,使用 Spring MVC 才是你的首选。
2.在微服务架构中,Spring MVC 和 WebFlux 可以混合使用,比如已经提到的,对于那些 IO 密集型服务(如网关),我们就可以使用 WebFlux 来实现。
引入依赖
SpringWebflux 执行过程和 SpringMVC 相似的
1.SpringWebflux 核心控制器 DispatchHandler,实现接口 WebHandler,WebHandler 有一个方法handle
SpringWebflux 里面 DispatcherHandler,负责请求的处理
1. HandlerMapping:请求查询到处理的方法
2. HandlerAdapter:真正负责请求处理
3. HandlerResultHandler:响应结果处理
源码解读
用法与springmvc几乎是一样的,只是service的实现类有点不一样,这里以Product模型案例讲解
备注
SpringMVC 方式实现,同步阻塞的方式,基于 SpringMVC+Servlet+Tomcat
SpringWebflux 方式实现,异步非阻塞 方式,基于 SpringWebflux+Reactor+Netty
步骤一:编写Product模型
步骤二:编写IProductService接口
步骤三:编写ProductServiceImpl实现
注意:与springmvc相比较就是这里不一样,因此在能熟练运用springmvc的情况下使用SpringWebflux,应该还是比较容易
步骤四:ProductController的编写
步骤五:编写接口测试
1.在使用函数式编程模型操作时候,需要自己初始化服务器
2.基于函数式编程模型时候,有两个核心接口:
RouterFunction(实现路由功能,请求转发给对应的 handler)
HandlerFunction(处理请求生成响应的函数)。
3.核心任务定义两个函数式接口的实现并且启动需要的服务器。
在基于注解实现的情况下具体实现步骤如下
步骤一:编写Handle处理器
步骤二:编写启动服务端
步骤三:测试
测试方式一:使用http模拟请求的方式,与springmvc的测试方式一样(略)
测试方式二:使用flux客户端的方式
到此这篇springwebflux原理(spring5 webflux)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/60929.html