Spring Cloud Gateway的FilterChain底层是通过FilteringWebHandler来实现的。下
FilteringWebHandler是Spring Cloud Gateway中的核心组件之一,它实现了WebHandler接口,用于处理请求并构建FilterChain过滤器链。
FilteringWebHandler的构造函数接收一个全局过滤器列表globalFilters,并通过loadFilters方法将全局过滤器转换为GatewayFilter对象。
loadFilters方法会遍历全局过滤器列表,将每个全局过滤器转换为GatewayFilter对象。如果全局过滤器实现了Ordered接口,则会创建一个OrderedGatewayFilter对象,否则直接创建一个GatewayFilterAdapter对象。
在handle方法中,首先从ServerWebExchange中获取路由信息Route对象。
然后将全局过滤器列表globalFilters和路由对象中的过滤器列表gatewayFilters合并到一个新的列表combined中。
对combined列表进行排序,排序规则是根据过滤器的order属性进行升序排序。
最后,通过FilteringWebHandler.DefaultGatewayFilterChain类创建一个过滤器链对象,并调用filter方法来处理请求。
过滤器链对象会依次调用每个过滤器的filter方法,将请求交给过滤器处理。
过滤器链的处理顺序是先执行全局过滤器,然后执行路由过滤器。
总结: FilteringWebHandler通过将全局过滤器和路由过滤器合并到一个过滤器链中,并按照顺序依次调用每个过滤器的filter方法来处理请求。
Learn more:
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!