什么是WebFlux
- 用于构建基于Reactive技术栈之上的Web应用程序
- 基于Reactive Streams API,运行在非阻塞服务器上 (jetty,Netty)
为什么会有WebFlux
- 对于非阻塞Web应用的需要
- 函数式编程
Tomcat新版本会对WebFlux有支持
关于WebFlux的性能
- 请求的耗时并不会有很大的改善
- 仅需少量固定数量的线程和较少的内存即可实现扩展
WebMVC v.s. WebFlux
- 已有Spring MVC应用,运行正常,就别改了.
- 依赖了大量阻塞式持久化API和网络API,建议使用Spring MVC
- 已经使用了非阻塞技术栈,可以考虑使用WebFlux
- 想要使用Java 8 Lambda结合轻量级函数式框架,可以考虑WebFlux
两种编程模型
- 基于注解的控制器
- 函数式Endpoints
常用注解 (雷同)
- @Controller
- @RequestMapping 及其等价注解
- @RequestBody / @ResponseBody
返回值 - Mono
/ Flux