Spring Framework 中包含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。 响应式堆栈 Web 框架 Spring WebFlux 是在 5.0
版本中添加的。 它是完全非阻塞的,支持 Reactive Streams 背压,并在 Netty、Undertow 和 Servlet 3.1+ 容器等服务器上运行。
两个 Web 框架都反映了它们的源模块(spring-webmvc
和 spring-webflux
)的名称,并在 Spring 框架中并排共存。 每个模块都是可选的。 应用程序可以使用一个或另一个模块,或者在某些情况下,两者 — 例如,具有响应式 WebClient
的 Spring MVC 控制器。
1、概述
为什么创建 Spring WebFlux?
部分答案是需要一个非阻塞的 Web 堆栈来处理具有少量线程的并发性并使用更少的硬件资源进行扩展。
Servlet 3.1 确实为非阻塞 I/O 提供了 API。 但是,使用它会远离 Servlet API 的其余部分,其中契约是同步的(Filter
、Servlet
)或阻塞的(getParameter
、getPar