开源框架-SpringCloud系列

SpringCloud Gateway-过滤器执行逻辑链分析

2020-04-01  本文已影响0人  侯文_ad82

Gateway过滤器的加载执行逻辑按照责任链的实际模式进行设计。GatewayFilter借助GatewayFilterChain实现责任链模式,按照过滤器的顺序依次执行对应过滤器。

流程如下:

关于GatewayFilter和GatewayFilterChain的接口定义如下:

过滤器链 过滤器接口

执行流程如下:

    a. 首次调用,在FilteringWebHandler的handle中,将Gateway的集合注入,并执行filter方法,如下图:

责任链-首次执行

    b. 调用filter时,从上一步传入的GatewayFilter过滤器列表中获取到一个过滤器,此时默认为0。调用第一个GatewayFilter.filter方法,需要构建一个DefaultGatewayFilterChain对象传入。

DefaultGatewayFilterChain.filter

c.此时调用第一个Gateway的filter方法,按照顺序先执行RemoveCachedBodyFilter,最终执行完成业务后,又调用了传入DefaultGatewayFilterChain对象的filter。

Gatewawy.filter

 d.后续反复执行b、c两步,直到GatewayFilter列表调用完成,或者中间出现异常终端。

上一篇下一篇

猜你喜欢

热点阅读