网关会碰到三类过滤器:
- 默认过滤器:DefaultFilter
- 自定义过滤:GatewayFilter
- 全局过滤器:GlobalFilter
请求路由后,会将三者合并到一个过滤器链(集合)中,排序后依次执行每个过滤器.
排序的规则是什么呢?
- 每一个过滤器都必须指定一个 int 类型的 order 值,order 值越小,优先级越高,执行顺序越靠前。
- GlobalFilter 通过实现 Ordered 接口,或者使用 @Order 注解来指定 order 值,由我们自己指定。
- 路由过滤器和 defaultFilter 的 order 由 Spring 指定,默认是按照声明顺序从1递增。
- 如果三种过滤器的 order 值一样时,会按照 defaultFilter > 路由过滤器 > GlobalFilter 的顺序执行。(本人在测试过程发现GlobalFilter>路由过滤器???) 这个也是这么说spring boot gateway 过滤器的执行顺序 - myCodeLikeShit - 博客园
乱说,这两个都是错的,本人的是对的,这个也是对的:Spring Cloud Gateway 过滤器执行顺序原理分析_抓手的博客-CSDN博客