Spring-Cloud-Gateway 源码解析 —— 处理器 (3.3) 之 FilteringWebHandler 创建过滤器链
总阅读量:5201次
摘要: 原创出处 http://www.iocoder.cn/Spring-Cloud-Gateway/handler-filtering-web-handler/ 「芋道源码」欢迎转载,保留摘要,谢谢!
本文主要基于 Spring-Cloud-Gateway 2.0.X M4
阅读源码最好的方式,是使用 IDEA 进行调试 Spring Cloud Gateway 源码,不然会一脸懵逼。
胖友可以点击「芋道源码」扫码关注,回复 git019 关键字
获得艿艿添加了中文注释的 Spring Cloud Gateway 源码地址。阅读源码很孤单,加入源码交流群,一起坚持!
1. 概述
本文主要分享 FilteringWebHandler。
在 《Spring-Cloud-Gateway 源码解析 —— 处理器 (3.2) 之 RoutePredicateHandlerMapping 路由匹配 》「2.1 SimpleHandlerAdapter」 里,我们看到 SimpleHandlerAdapter#handle(ServerWebExchange, Object)
调用 FilteringWebHandler#handle(ServerWebExchange)
方法,处理请求。
FilteringWebHandler 通过创建请求对应的 Route 对应的 GatewayFilterChain 进行处理。
推荐 Spring Cloud 书籍:
- 请支持正版。下载盗版,等于主动编写低级 BUG 。
- 程序猿DD —— 《Spring Cloud微服务实战》
- 周立 —— 《Spring Cloud与Docker微服务架构实战》
- 两书齐买,京东包邮。
2. FilteringWebHandler
org.springframework.cloud.gateway.handler.FilteringWebHandler
,#handle(ServerWebExchange)
代码如下 :
1: public class FilteringWebHandler implements WebHandler { |
- 本方法涉及到的过滤器 GlobalFilter / GatewayFilter / GatewayFilterAdapter / OrderedGatewayFilter 类,我们在 《Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.1) 之 GatewayFilter 一览》 详细解析。
- 本方法涉及到的过滤器链 GatewayFilterChain / DefaultGatewayFilterChain 类,我们在 《Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.1) 之 GatewayFilter 一览》 详细解析。
- 第 11 行 :从
GATEWAY_ROUTE_ATTR
获得 请求对应的 Route 。 - 第 13 至 15 行 :获得 GatewayFilter 数组,包含
route.filters
和globalFilters
。 - 第 19 行 :排序获得的 GatewayFilter 数组。
- 第 23 行 :使用获得的 GatewayFilter 数组创建 DefaultGatewayFilterChain ,过滤处理请求。
666. 彩蛋
哈哈哈,我水更我快乐。主要还是考虑文章尽量解耦,所以这篇内容偏水( 很水 )。
胖友,分享一波朋友圈可好!