# webflux-demo_1 **Repository Path**: jiyilee-backend/webflux-demo_1 ## Basic Information - **Project Name**: webflux-demo_1 - **Description**: spring-webflux demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-10-17 - **Last Updated**: 2023-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ##### 异步非阻塞的框架在 Servlet3.X以后才支持,核心是基于 Reactor 的API 实现的。 # 注意点 - 当 mediaType 为 `text/event-stream` 时,延时返回数据流。在谷歌浏览器中,延时获取数据;在火狐浏览器,下载为文件(在ServletApplicationContext环境下不生效); - controller 与 route 都有定义相同`url`的的情况下,选择route定义的`url`; - 处理程序使用`Flux`或`Mono`来生成响应 (`Flux`表示的是包含 0 到 N 个元素的异步序列; `Mono`表示的是包含 0 或者 1 个元素的异步序列) # `Webflux`与`SpringMVC`的区别 - 两个框架都可以使用注解方式,都可以运行在 Tomcat 等容器中 - SpringMVC 采用命令式编程,Webflux 采用异步响应式编程 # `webflux`特点 - 异步非阻塞 - 响应式函数编程 - 不拘束于servlet容器 #### 核心控制器是`DispatcherHandler`,实现`WebHandler`接口,调用`handle`方法 ##### `HandlerMapping` 请求查询处理的方法(接口/路由) ##### `HandlerAdapter` 真正负责请求处理 ##### `HandlerResultHandler` 响应结果处理 # 全局异常处理 - 继承`AbstractErrorWebExceptionHandler` ,自定义拓展`DefaultErrorAttributes`类,覆盖` getErrorAttributes()`方法 - 直接实现`ErrorWebExceptionHandler`类,重写 `handle`方法 # `WebMVC`使用异步 - `HttpServletResponse`报`org.apache.coyote.CloseNowException: Failed write`