route没有注解属性,因为它是通过routedefinition解析、routelocator组装的不可变数据对象,不经过spring容器bean创建流程,故不保留注解元信息;应使用metadata传参。

Spring Cloud Gateway 的 GatewayFilterFactory 本身无法直接读取 Route 上的注解属性,因为 Route 是配置驱动(YAML/Properties 或 Java DSL)构建的,**不基于 Spring Bean + 注解的生命周期**,所以像 @Route(value = "my-route", tags = "auth") 这样的自定义注解在 Route 对象上并不存在 —— Route 实例(Route 类)是纯数据对象,没有注解元信息。
为什么 Route 没有注解属性?
Route 由 RouteDefinition 解析而来,最终是通过 RouteLocator(如 CachingRouteLocator)组装的不可变对象。它不经过 Spring 容器的 Bean 创建流程,因此不会保留任何类/方法上的注解。你写的注解如果加在配置类或方法上,**不会自动绑定到 Route 实例**。
替代方案:用 Route 的元数据(Metadata)传参
最标准、推荐的做法是把“想当注解用”的配置项,写进 Route 的 metadata 字段,然后在自定义 GatewayFilterFactory 中读取:
- YAML 配置示例:
routes:
- id: user-service
uri: lb://user-service
predicates:
- Path=/api/users/**
metadata:
auth-required: true
permissions: ["USER_READ", "USER_WRITE"]
- Java DSL(等效):
route(r -> r.path("/api/users/**")
.uri("lb://user-service")
.metadata("auth-required", "true")
.metadata("permissions", List.of("USER_READ", "USER_WRITE")))
- 在自定义
GatewayFilterFactory中获取:
public class AuthCheckGatewayFilterFactory 通过 `dcc-mcp-cli` 命令行工具控制实时 DCC 主机(Maya、Blender、Houdini、Photoshop、3ds Max 以及自定义的 Studio 工具)。
针对 ClawHub、OpenClaw、Cursor、Claude 和支持 shell 的 Agent 主机:验证网关健康状态、列出已注册的 DCC 实例、搜索工具、检查 Schema、调用工具——全程无需直接编写或发送 MCP 请求。
若系统中未安装 `dcc-mcp-cli`,需先征得用户同意,再从 GitHub
extends AbstractGatewayFilterFactory
public static class Config { }
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
// 获取当前匹配的 Route
Route route = exchange.getRequiredAttribute(GATEWAY_ROUTE_ATTR);
// 读取 metadata
Map
Boolean authRequired = (Boolean) metadata.get("auth-required");
List
// 后续逻辑...
return chain.filter(exchange);
};
}










