You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Gateway 2.2.8.RELEASE自定义路由过滤器未触发该如何解决?

解决Spring Gateway 2.2.8.RELEASE自定义路由过滤器不生效的方案

问题根因1:过滤器工厂命名不符合框架约定

Spring Gateway对自定义路由过滤器工厂有强制命名规则:类名必须以GatewayFilterFactory为后缀,框架会自动截取后缀前的内容作为配置文件中的过滤器名称。
你当前的类名为LogFilter2,未遵循该约定,所以配置中填写的LogFilter2无法匹配到对应的过滤器工厂实例。
修改代码如下:

@Component
// 类名按照 前缀+GatewayFilterFactory 规则修改
public class LogFilter2GatewayFilterFactory extends AbstractGatewayFilterFactory<LogFilter2GatewayFilterFactory.Config> {

    // 无自定义参数时可以定义空配置类
    public static class Config {}

    public LogFilter2GatewayFilterFactory() {
        super(Config.class);
    }

    @Override
    public GatewayFilter apply(Config config) {
        return (exchange, chain) -> {
            System.out.println("LogFilter2 filtered!!!");
            return chain.filter(exchange);
        };
    }
}

问题根因2:自动生成的服务发现路由优先级更高

你开启了spring.cloud.gateway.discovery.locator.enabled=true,框架会自动为所有注册到注册中心的服务生成默认路由,默认优先级高于你手动配置的路由,请求会优先匹配自动生成的路由,不会触发手动配置路由绑定的过滤器。
在application.properties中给手动配置的路由设置更高优先级(order值越小优先级越高):

spring.cloud.gateway.routes[0].order=-1

验证修改

修改后保持配置文件中过滤器的配置不变即可:

spring.cloud.gateway.routes[0].filters[0]=LogFilter2

重启项目后请求/music/xxxx路径即可看到对应日志输出。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:48:03