Spring Webflux
- Reactor核心:HttpHandler 原生API;
- DispatcherHandler 原理;
- DispatcherHandler 组件分析
- DispatcherHandler 请求处理流程
- 返回结果处理
- 异常处理
- 视图解析
- 重定向
- Rendering
- 注解式 - Controller
- 兼容老版本方式
- 新版本变化
- SSE
- 文件上传
- 错误响应
- @ExceptionHandler
- ErrorResponse: 自定义 错误响应
- ProblemDetail:自定义PD返回
- @ExceptionHandler
- WebFlux配置
- @EnableWebFlux
- WebFluxConfigurer
WebFlux:底层完全基于netty+reactor+springweb 完成一个全异步非阻塞的web响应式框架
底层:异步 + 消息队列(内存) + 事件回调机制 = 整套系统
优点:能使用少量资源处理大量请求;
0、组件对比
| API功能 | Servlet-阻塞式Web | WebFlux-响应式Web |
|---|---|---|
| 前端控制器 | DispatcherServlet | DispatcherHandler |
| 处理器 | Controller | WebHandler/Controller |
| 请求、响应 | ServletRequest、ServletResponse | ServerWebExchange: ServerHttpRequest、ServerHttpResponse |
| 过滤器 | Filter(HttpFilter) | WebFilter |
| 异常处理器 | HandlerExceptionResolver | DispatchExceptionHandler |
| Web配置 | @EnableWebMvc | @EnableWebFlux |
| 自定义配置 | WebMvcConfigurer | WebFluxConfigurer |
| 返回结果 | 任意 | Mono、Flux、任意 |
| 发送REST请求 | RestTemplate | WebClient |
Mono: 返回0|1 数据流
Flux:返回N数据流
1、WebFlux
底层基于Netty实现的Web容器与请求/响应处理机制
参照:https://docs.spring.io/spring-framework/reference/6.0/web/webflux.html
1、引入
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.6</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
Context 响应式上下文数据传递; 由下游传播给上游;
以前: 浏览器 --> Controller --> Service --> Dao: 阻塞式编程
现在: Dao(数据源查询对象【数据发布者】) --> Service --> Controller --> 浏览器: 响应式
大数据流程: 从一个数据源拿到大量数据进行分析计算;
ProductVistorDao.loadData()
.distinct()
.map()
.filter()
.handle()
.subscribe();
;//加载最新的商品浏览数据

2、Reactor Core
1、HttpHandler、HttpServer
public static void main(String[] args) throws IOException {
//快速自己编写一个能处理请求的服务器
//1、创建一个能处理Http请求的处理器。 参数:请求、响应; 返回值:Mono<Void>:代表处理完成的信号
HttpHandler handler = (ServerHttpRequest request,
ServerHttpResponse response)->{

最低0.47元/天 解锁文章
862

被折叠的 条评论
为什么被折叠?



