13-WebFlux
1. 异步Web框架的事件轮询机制
- 用较少的线程处理更多请求,减少线程管理的开销
- 很多请求的线程并不是在运行,而是在等待
- 事件驱动
反应式编程适合请求多且大部分在等待的情况
2. Spring MVC与Spring WebFlux
- 不同
- MVC:依赖多线程处理
- WebFlux:在事件轮询中处理请求
- 可以使用纯粹的函数式编程实现Controller
- 共性
- WebFlux也可以使用Controller、RequestMapping等注解
- WebFlux的参数和返回值可能是流
- WebFlux也可以使用Controller、RequestMapping等注解
依赖:spring-boot-starter-webflux
3. 实现
3.1. repository
- 继承
ReactiveCRUDrepository
接口 - 成员方法返回流
4. controller
- 返回流
- 如果方法没有返回值,需要在方法内订阅
- 否则不会执行,不订阅就不会驱动
- 多层嵌套流,对外围订阅不会触发内层的流
例子:
1 |
|
1 | Hello, Spring Reactive data time:2024-01-02T20:40:46.651302900 |
1 |
|
4.1. 使用函数式范式定义控制器
- 基本组件
- HandlerFunction:
- RouterFunction:路由和处理关系
WebClient:相当于RestTemplate
5. R2DBC
反应式关系型数据库链接
JDBC的替代方案
- 标题: 13-WebFlux
- 作者: Charlie
- 创建于 : 2023-12-07 18:12:00
- 更新于 : 2024-07-05 12:55:04
- 链接: https://chillcharlie357.github.io/posts/bfe92605/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论