Spring WebFlux
目录
基于注解编程模型
函数式编程模型
传统的基于Servlet的Web框架,如Spring MVC,在本质上都是阻塞和多线程的,每个连接都会使用一个线程。在请求处理的时候,会在线程池中拉取一个工作者( worker )线程来对请求进行处理。同时,请求线程是阻塞的,直到工作者线程提示它已经完成为止。
首先webflux不是spring mvc的替代方案,webflux强调的是异步非阻塞,spring mvc强调的是同步阻塞,如果方案大部分偏向于非同步,则spring webflux才是首选。另外,如果依赖了大量阻塞式持久化 API 和网络 API,建议使⽤ Spring MVC。
WebMVC:springMvc构建在servlet api之上,因此需要Servlet容器(比如Tomcat)才能执行。使用的是同步阻塞式IO模型,每一个请求对应一个线程去处理。
WebFlux:spring webflux是一个异步非阻塞式的web框架,它能够充分利用多核cpu的硬件资源去处理大量的并发请求。
相同之处
都可以使用springmvc注解,如@Controller,方便我们在两个web框架中自由转换;
都可以使用tomcat,jetty,underto