SpringBoot 4.2 Starter WebFlux响应式编程入门【高并发】
Spring Boot 4.2启用WebFlux必须删除spring-boot-starter-web依赖,仅引入spring-boot-starter-webflux,配合R2DBC实现全链路非阻塞;否则Mono/Flux会被强制阻塞,丧失响应式意义。

要在SpringBoot 4.2中快速启用WebFlux响应式编程能力,支撑高并发IO密集型场景(如实时推送、网关、长连接服务),必须绕过传统MVC阻塞模型,直接基于Reactor构建非阻塞数据流。这一步错不得——若仍用spring-boot-starter-web依赖,整个应用将默认走Tomcat+Servlet阻塞链路,Mono/Flux返回值会被强制阻塞等待,彻底丧失响应式意义。
引入WebFlux核心依赖
打开pom.xml,删除spring-boot-starter-web(哪怕只留一行也必须删干净),仅保留:
【删除spring-boot-starter-web是硬性前提,否则WebFlux自动降级为阻塞模式】。SpringBoot 4.2默认使用Netty作为底层容器,无需额外配置——只要starter-web不存在,启动时日志会明确打印“Using Netty as web server”,这是验证成功的唯一信号。
编写响应式控制器
创建UserController.java,用@RestController注解声明:
@GetMapping("/users")
public Flux
return userService.findAll();
}
@GetMapping("/users/{id}")
public Mono
return userService.findById(id);
}
注意:方法返回类型必须是Flux或Mono,不能是List/User等阻塞类型;路径变量注解用@PathVariable(不是@RequestParam);所有业务层方法也需同步改为返回Mono/Flux——若service里还调用JDBC或MyBatis,立刻报错。
配置响应式数据库访问
第一步:添加R2DBC驱动依赖(以PostgreSQL为例):
第二步:在application.yml中配置连接:
spring:
r2dbc:
url: r2dbc:postgresql://localhost:5432/mydb
username: user
password: pass
第三步:定义Repository接口继承R2dbcRepository:
public interface UserRepository extends R2dbcRepository
Flux
}
这一步不可跳过——JDBC和Hibernate不支持响应式,【若继续使用JpaRespository或JdbcTemplate,应用启动失败且报错“Missing R2DBC driver”】。
验证WebFlux是否生效
方法一:启动应用后访问http://localhost:8080/actuator/env,搜索reactive字段,确认server.reactive.enabled=true存在;
方法二:发送curl请求:curl -v http://localhost:8080/users,观察响应头中是否有Transfer-Encoding: chunked——这是流式响应的标志;
方法三:在控制器方法内加断点,单步调试时线程名应为reactor-http-nio-开头,而非http-nio-(后者代表Tomcat阻塞线程)。