共计 498 个字符,预计需要花费 2 分钟才能阅读完成。
gateway 有两种 filter,第一种 gatewayFilter(Route Filter)就是在 yml 配置文件里定义的,比方
discovery:
locator:
enabled: true
filters:
- StripPrefix=1
这里的 StripPrefix 就是 gatewayFilter,是在 StripPrefixGatewayFilterFactory 里定义的,这个 filter 的执行程序是 1(源码在 RouteDefinitionRouteLocator 的 loadGatewayFilters 办法,这里会加载配置,失去 filter 和参数值,而后按配置的程序,默认进行排序,比方这里的 StripPrefix 是第一个,那他的 order 值就是 1)
GlobalFilter 就是个别自定义的 filter 了,编写一个 spring 组件,继承 GlobalFilter 和 Ordered 即可
他们两种 filter 的执行程序都是由 order 来定义的,具体源码在 FilterWebHandler 的 handle 办法,先拿到配置文件里的 gatewayFilter,在拿 GlobalFilter,而后排序失去最终的执行程序。
正文完
发表至: springboot
2021-11-03