请求进入网关会碰到三类过滤器:
1.当前路由过滤器(属于GatewayFilter)
2.DefaultFilter(属于GatewayFilter)
3.GlobalFilter(属于GlobalFilter)
合并到一个过滤器链集合中,排序后依次执行每个过滤器。
GatewayFilterAdapter中有一个GlobalFilter, 适配器模式,如上图所示,所以可以看做GlobalFilter也是属于GatewayFilter的。所以上面三类过滤器可以放入一个集合中。
1.每个过滤器都必须指定一个int类型的order值,order值越小,优先级越高,执行顺序越靠前。
2.GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由程序员自己指定。
3.路由过滤器和defaultFilter的order由spring指定,默认是按照声明顺序从1递增。
4.如果三种类型的过滤器的order值一样的时候的执行顺序是:defaultFilter-> 路由过滤器 -> GlobalFilter