Global Filter 和 GatewayFilter 组合排序
该GlobalFilter 接口具有相同的签名GatewayFilter。这些都是有条件地适用于所有路由的特殊过滤器。
当请求与路由匹配时,过滤Web处理程序会将的所有实例GlobalFilter和所有特定GatewayFilter于路由的实例添加到过滤器链中。该组合的过滤器链按org.springframework.core.Ordered接口排序,您可以通过实现该getOrder()方法进行设置。
由于Spring Cloud Gateway区分了执行过滤器逻辑的“pre”阶段和“post”阶段(请参见工作原理),因此优先级最高的过滤器是“pre”阶段的第一个,而“post”阶段的最后一个-阶段。
以下清单配置了一个过滤器链:
例 56. ExampleConfiguration.java
@Beanpublic GlobalFilter customFilter() {return new CustomGlobalFilter();}public class CustomGlobalFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {log.info("custom global filter");return chain.filter(exchange);}@Overridepublic int getOrder() {return -1;}}
