响应式编程库Reactor(二)Spring Webflux

  • Reactor核心HttpHandler 原生API;
  • DispatcherHandler 原理;
    • DispatcherHandler 组件分析
    • DispatcherHandler 请求处理流程
    • 返回结果处理
    • 异常处理
    • 视图解析
      • 重定向
      • Rendering
  • 注解式 - Controller
    • 兼容老版本方式
    • 新版本变化
      • SSE
      • 文件上传
  • 错误响应
    • @ExceptionHandler
      • ErrorResponse: 自定义 错误响应
      • ProblemDetail:自定义PD返回
  • WebFlux配置
    • @EnableWebFlux
    • WebFluxConfigurer

WebFlux:底层完全基于netty+reactor+springweb 完成一个全异步非阻塞的web响应式框架

底层:异步 + 消息队列(内存) + 事件回调机制 = 整套系统

优点:能使用少量资源处理大量请求;

0、组件对比

API功能 Servlet-阻塞式Web WebFlux-响应式Web
前端控制器 DispatcherServlet DispatcherHandler
处理器 Controller WebHandler/Controller
请求、响应 ServletRequestServletResponse 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)->{
   
   
            
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值