使用场景
多个过滤器时,确定执行的先后顺序.注意是过滤器执行的先后顺序,不是加载的先后顺序
值越小,越先执行
@Component
public class GlobalLogFilter implements GlobalFilter, Ordered {
@Override
public int getOrder() {
return -199;
}
}
@Component
@Order(-199)
public class GlobalLogFilter implements GlobalFilter{
}
注意
一般情况下,这两种写法效果相同,但是,在gateway中两者差别甚大
- 如果使用
@Order(-199)
写法,会先执行gatewayFilter
(虽然默认的order是10000),然后才执行GlobalFilter
- 如果使用
Ordered
接口写法,会按照order值从小到大执行
例如请求/sp/xxx/yyy接口:
gateway配置
- id: mkeke-sp
uri: lb://mkeke-sp
predicates:
- Path=/sp/**
filters:
- StripPrefix=1
过滤器中获取String url = exchange.getRequest().getURI().getPath();
- 如果使用
@Order(-199)
,url="/xxx/yyy",因为此时先执行gatewayFilter
- 如果使用
Ordered
接口,order=-199,url="/sp/xxx/yyy",因为此时先执行GlobalFilter