SpringBoot2.1(10)WebFlux优秀的新一代异步非阻塞Web框架

 

Spring5以后,新增了Webflux,异步非阻塞Web框架。

在SpringBoot第三篇的时候,简单介绍过WebFlux。

本篇,将从更细的粒度上,更全面的介绍下WebFlux。

 

一、什么是WebFlux

WebFlux是脱离了传统阻塞式Servlet框架,所以,它不同于Spring MVC。

WebFlux是 Spring 5 的一个新模块。包含了响应式 HTTP、服务器推送事件和 WebSocket 的客户端和服务器端支持。

 

官方架构图

 

Webflux用少量的线程处理request和response io操作,这些线程称为Loop线程,而业务交给响应式编程框架处理,响应式编程是非常灵活的,用户可以将业务中阻塞的操作提交到响应式框架的work线程中执行,而不阻塞的操作依然可以在Loop线程中进行处理,大大提高了Loop线程的利用率。

虽然Spring WebFlux不同于Spring MVC,但是Spring考虑到让我们更快的上手,它们的注解基本都是一样的。

 

二、SpringBoot使用WebMVC和WebFlux的差别

SpringBoot WebMVC应用,都需要依赖spring-boot-starter-web ,内部包含Tomcat。

使用WebFlux不需要依赖spring-boot-starter-web 只依赖 spring-boot-starter-webflux 即可。

它的内部使用Netty来运行应用,Netty是基于异步和事件驱动的。

 

依赖图如下:

 

 

三、WebFlux主要功能介绍和对比

1、Maven

依赖清单对比:

- WebMVC(传统Servlet)

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

 

- WebFlux(异步非阻塞)

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

为了方便区分,在下面将使用servlet-web代替WebMVC,webflux-web代替WebFlux。

 

2、编码清单对比:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值