Spring WebFlux
==============
Spring框架中包含的原始web框架springweb mvc是专门为Servlet API和Servlet容器构建的。反应式堆栈web框架SpringWebFlux是在5.0版本中添加的。它是完全无阻塞的,支持反应流背压,并在Netty、Undertow和servlet3.1+容器等服务器上运行。
两个web框架都反映了它们的源模块(和springwebflux)的名称,并且在spring框架中并排共存。每个模块都是可选的。应用程序可以使用一个或另一个模块,在某些情况下,可以同时使用这两个模块(例如,Spring MVC控制器和反应式WebClient)。
为什么会创建SpringWebFlux?
====================
部分原因是需要一个无阻塞的web堆栈来处理具有少量线程的并发性,并使用较少的硬件资源进行扩展。Servlet3.1确实为非阻塞I/O提供了一个API。但是,使用它会导致ServletAPI的其他部分出现问题,在这些API中契约是同步的( Filter , Servlet )或阻塞的( getParameter , getPart )。这是一个新的公共API在任何非阻塞运行时作为基础的动机。这一点很重要,因为服务器(如Netty)在异步、非阻塞空间中已经建立良好。
答案的另一部分是函数式编程。正如在Java5中添加注释创造了机会(如带注释的REST控