编辑
2023-11-23
Java
00
请注意,本文编写于 534 天前,最后修改于 534 天前,其中某些信息可能已经过时。

Spring Cloud Gateway的FilterChain底层是通过FilteringWebHandler来实现的。下

  1. FilteringWebHandler是Spring Cloud Gateway中的核心组件之一,它实现了WebHandler接口,用于处理请求并构建FilterChain过滤器链。

  2. FilteringWebHandler的构造函数接收一个全局过滤器列表globalFilters,并通过loadFilters方法将全局过滤器转换为GatewayFilter对象。

  3. loadFilters方法会遍历全局过滤器列表,将每个全局过滤器转换为GatewayFilter对象。如果全局过滤器实现了Ordered接口,则会创建一个OrderedGatewayFilter对象,否则直接创建一个GatewayFilterAdapter对象。

  4. 在handle方法中,首先从ServerWebExchange中获取路由信息Route对象。

  5. 然后将全局过滤器列表globalFilters和路由对象中的过滤器列表gatewayFilters合并到一个新的列表combined中。

  6. 对combined列表进行排序,排序规则是根据过滤器的order属性进行升序排序。

  7. 最后,通过FilteringWebHandler.DefaultGatewayFilterChain类创建一个过滤器链对象,并调用filter方法来处理请求。

  8. 过滤器链对象会依次调用每个过滤器的filter方法,将请求交给过滤器处理。

  9. 过滤器链的处理顺序是先执行全局过滤器,然后执行路由过滤器。

总结: FilteringWebHandler通过将全局过滤器和路由过滤器合并到一个过滤器链中,并按照顺序依次调用每个过滤器的filter方法来处理请求。


Learn more:

  1. Spring Cloud Gateway 源码剖析之Filter Chain过滤器链_老周聊架构的博客-CSDN博客
  2. Spring Cloud Gateway 原理分析 - 掘金
  3. spring-cloud-gateway过滤器实践 - 当我遇上你csy - 博客园

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!