SpringCloud-Gateway源码笔记整理
- 开发
- 21
-
网关的执行流程
- HttpWebHandlerAdapter: 构建组装网关请求的上下文。
- DispatcherHandler:所有请求的分处理器,负责分请求到对应的处理器。
- RoutePredicateHandlerMapping:路由断言处理器,用于路由的查找,以及找到路由后返回对应的WebHandler,
DispatcherHandler会依次遍历HandlerMapping集合进行处理
- FilteringWebHandler:创建过滤器链,使用Filter链表处理请求。
RoutePredicateHandlerMapping找到路由后返回对应的FilteringWebHandler后对请求进行处理。
FilteringWebHandler 负责组装Filter链表并调用Filter处理请求。
DispatcherHandler的handler执行顺序
- 校验 handlerMapping
- 遍历 Mapping 获取 Mapping 对应的 handler(此处会找到gateway对应的 RoutePredicateHandlerMapping),
并通过 RoutePredicateHandlerMapping 获取handler(FilteringWebHandler)。
- 通过 handler 对应的 HandlerAdapter 对 handler 进行调用(Gateway使用 SimpleHandlerAdapter),
即 FilteringWebHandler 于 SimpleHandlerAdapter 对应。
RoutePredicateHandlerMapping 执行分析
- RoutePredicateHandlerMapping 的执行顺序是先通过路由定位器获取全部路由。
- 然后通过路由断言过滤掉不匹配的路由信息,找到路由信息后将路由信息设置到上下文中。
- 最后返回 Gateway 固定的 webHandler,即 FilteringWebHandler。
FilteringWebHandler 源码分析
- FilteringWebHandler 的执行顺序先构建一个包含全局过滤器的集合。获取上下文中的路由信息,
然后将路由里的过滤器添加到集合中,对过滤器集合进行排序。
- 通过过滤器集合组装 Filter 链并调用 Gateway 默认的Filter链,最后通过过滤器来处理请求并转发到代理服务中。
- 通过 new DefaultGatewayFilterChain(combined).filter(exchange) 创建Gateway,默认过滤器链。
原文地址:https://blog.csdn.net/yichengjie_c/article/details/136833564
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:https://www.suanlizi.com/kf/1771019476737855488.html
如若内容造成侵权/违法违规/事实不符,请联系《酸梨子》网邮箱:1419361763@qq.com进行投诉反馈,一经查实,立即删除!