Spring Cloud Gateway:全局过滤器

GlobalFilter接口与GatewayFilter具有相同的签名。这些是特殊的过滤器,它们会有条件地应用于所有路由。

注意:此接口及其使用方式可能会在将来的里程碑版本中发生变化。

1.全局过滤器和网关过滤器的组合排序

当请求匹配到一个路由时,过滤器的 Web 处理器会将所有的 GlobalFilter 实例和特定于路由的 GatewayFilter 实例添加到过滤器链中。这个组合的过滤器链会按照 org.springframework.core.Ordered 接口进行排序,你可以通过实现 getOrder() 方法来设置排序顺序。

由于 Spring Cloud Gateway 在过滤器逻辑执行时区分了“pre”阶段和“post”阶段(详见《工作原理》),优先级最高的过滤器将作为“pre”阶段的第一个过滤器和“post”阶段的最后一个过滤器。

以下示例配置了一个过滤器链:

ExampleConfiguration.java

@Bean
public GlobalFilter customFilter() {
    return new CustomGlobalFilter();
}

public class CustomGlobalFilter implements GlobalFilter, Ordered {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        log.info("custom global filter");
        return chain.filter(exchange);
    }

    @Override
    public int getOrder() {
        return -1;
    }

猜你喜欢

转载自blog.csdn.net/qq_29901385/article/details/131319020