Webflux简介

Webflux 简介

什么是 Spring WebFlux

Spring WebFlux 是 Spring Framework 5.0 引入的响应式 Web 框架,它是 Spring MVC 的替代方案,专为构建非阻塞、异步的 Web 应用程序而设计。

核心特点

  • 非阻塞 I/O:基于事件驱动模型,不会阻塞线程等待 I/O 操作完成
  • 响应式编程:基于 Reactive Streams 规范,使用 Project Reactor 作为默认实现
  • 背压支持:支持背压(Backpressure)机制,防止生产者压垮消费者
  • 函数式编程:支持函数式端点定义,提供更灵活的路由方式

WebFlux vs Spring MVC

特性 Spring MVC Spring WebFlux
编程模型 命令式(Imperative) 响应式(Reactive)
线程模型 每请求一线程 事件循环(Event Loop)
I/O 模型 阻塞 I/O 非阻塞 I/O
适用场景 传统 Web 应用 高并发、流式数据
Servlet 依赖 依赖 Servlet API 可选(支持 Netty)
数据库支持 JDBC(阻塞) R2DBC(响应式)

何时使用 WebFlux

适合使用的场景

  1. 高并发应用:需要处理大量并发连接(如聊天应用、实时推送)
  2. 流式数据处理:处理实时数据流(如股票行情、IoT 数据)
  3. 微服务网关:作为 API 网关处理大量请求转发
  4. 服务间调用密集:需要大量调用外部服务的应用

不适合的场景

  1. CPU 密集型任务:响应式编程对 CPU 密集型任务没有优势
  2. 阻塞依赖:如果依赖的库是阻塞的(如传统 JDBC),则无法发挥优势
  3. 团队不熟悉响应式编程:学习曲线较陡

技术栈对比

1
2
3
4
5
6
7
8
9
┌─────────────────────────────────────────────────────────┐
│ Spring Boot │
├────────────────────────┬────────────────────────────────┤
│ Spring MVC │ Spring WebFlux │
├────────────────────────┼────────────────────────────────┤
│ Servlet API │ Reactive Streams API │
├────────────────────────┼────────────────────────────────┤
│ Tomcat/Jetty/Undertow │ Netty/Undertow/Servlet │
└────────────────────────┴────────────────────────────────┘

快速开始

Maven 依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

简单示例

1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
public class HelloController {

@GetMapping("/hello")
public Mono<String> hello() {
return Mono.just("Hello, WebFlux!");
}

@GetMapping("/users")
public Flux<User> getUsers() {
return userService.findAll();
}
}

相关链接

  • 下一篇:响应式编程基础
  • Reactor核心API

Webflux简介
https://zmmmmy.github.io/2026/01/10/Webflux简介/
作者
ZhiMy
发布于
2026年1月10日
许可协议