Spring-Cloud-Gateway 源码解析 —— 处理器 (3.3) 之 FilteringWebHandler 创建过滤器链

扫码关注公众号:Java 技术驿站

发送:vip
获取永久解锁本站全部文章的链接

撸了今年阿里、腾讯和美团的面试,我有一个重要发现…….

摘要: 原创出处 http://www.iocoder.cn/Spring-Cloud-Gateway/handler-filtering-web-handler/ 「芋道源码」欢迎转载,保留摘要,谢谢!

本文主要基于 Spring-Cloud-Gateway 2.0.X M4


1. 概述

本文主要分享 FilteringWebHandler

《Spring-Cloud-Gateway 源码解析 —— 处理器 (3.2) 之 RoutePredicateHandlerMapping 路由匹配 》「2.1 SimpleHandlerAdapter」 里,我们看到 SimpleHandlerAdapter#handle(ServerWebExchange, Object) 调用 FilteringWebHandler#handle(ServerWebExchange) 方法,处理请求。

FilteringWebHandler 通过创建请求对应的 Route 对应的 GatewayFilterChain 进行处理。


推荐 Spring Cloud 书籍

推荐 Spring Cloud 视频

2. FilteringWebHandler

org.springframework.cloud.gateway.handler.FilteringWebHandler#handle(ServerWebExchange) 代码如下 :

  1: public class FilteringWebHandler implements WebHandler {
  2:
  3:    /**
  4:     * 全局过滤器
  5:    */
  6:    private final List<GatewayFilter> globalFilters;
  7:
  8:    @Override
  9:    public Mono<Void> handle(ServerWebExchange exchange) {
 10:        // 获得 Route
 11:        Route route = exchange.getRequiredAttribute(GATEWAY_ROUTE_ATTR);
 12:        // 获得 GatewayFilter
 13:        List<GatewayFilter> gatewayFilters = route.getFilters();
 14:        List<GatewayFilter> combined = new ArrayList<>(this.globalFilters);
 15:        combined.addAll(gatewayFilters);
 16:
 17:        // 排序
 18:        //TODO: needed or cached?
 19:        AnnotationAwareOrderComparator.sort(combined);
 20:        logger.debug("Sorted gatewayFilterFactories: "+ combined);
 21:
 22:        // 创建 DefaultGatewayFilterChain
 23:        return new DefaultGatewayFilterChain(combined).filter(exchange);
 24:    }
 25: }
赞(0) 打赏

如未加特殊说明,此网站文章均为原创,转载必须注明出处。Java 技术驿站 » Spring-Cloud-Gateway 源码解析 —— 处理器 (3.3) 之 FilteringWebHandler 创建过滤器链
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注【Java 技术驿站】公众号,每天早上 8:10 为你推送一篇技术文章


扫描二维码关注公众号

加 chenssy 为好友,交流技术


关注【Java 技术驿站】公众号 回复 “VIP”,获取 VIP 地址永久关闭弹出窗口

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏