| 失效链接处理 |
|
为什么越来越多人开始使用 WebFlux ?
相关截图:
![]() 主要内容:
先说说背景:WebFlux 从哪来?
如果你做 Java 后端,大概率用过 Spring MVC——它基于 Servlet,写法直观,生态成熟,是 Spring 最早自带的 Web 框架。
但从 Spring 5 开始,Spring 又推出了 Spring WebFlux,专门面向「响应式、非阻塞」场景。它和 Spring MVC 并存,模块名分别叫 spring-webmvc 和 spring-webflux,你可以只用其中一个,也可以在同一个项目里混用(比如 MVC 控制器配合响应式的 WebClient)。
主要有下面两方面因素:
需要一套真正非阻塞的 Web 技术栈Servlet 虽然后来支持了非阻塞 I/O,但 Filter、Servlet 等 API 本质上还是同步/阻塞的。要彻底走非阻塞路线,就需要新的底层 API。Netty 这类服务器在异步领域已经很成熟,WebFlux 正好搭在这上面。
Java 8 带来的函数式编程Lambda 表达式让「声明式组合异步逻辑」变得自然。WebFlux 因此除了注解式控制器,还提供了函数式路由这种更轻量的写法。
什么是「响应式」?
首先介绍下响应式,其实可以拆成两个日常感受:
第一,是「有事再做,别干等着」。传统写法里,线程去调远程接口,往往就卡住等结果。响应式写法里,线程发出请求后先去干别的,等数据到了再回来处理——就像你点外卖后不会站在门口傻等,而是继续刷手机。
第二,是「背压(Back Pressure)」。生产数据太快、消费跟不上时,需要一种机制让下游告诉上游:慢点,我吃不消了。Reactive Streams 规范(Java 9 也纳入了)就是干这个的。Spring WebFlux 底层依赖 Reactor,提供了 Mono(0 或 1 个结果)和 Flux(0 到 N 个结果)两种类型,写异步流水线很方便。
|


苏公网安备 32061202001004号
