Spring Cloud Gateway下TokenRelayGatewayFilterFactory无法自动注入问题
问题解决方法
问题根源
你遇到的注入失败问题是依赖版本不兼容+组件模块迁移导致的:
- Spring Cloud 2020.0.x(代号Ilford)版本开始,原
spring-cloud-security模块中的网关TokenRelay相关能力已经全部合并到spring-cloud-gateway模块中,独立的spring-cloud-security依赖已经停止维护 - 你引入的
spring-cloud-security:2.2.5.RELEASE属于Spring Cloud Hoxton版本的组件,和2020.0.3版本存在严重兼容性问题,仅包含已废弃的旧包路径下的TokenRelayGatewayFilterFactory实现
解决步骤
1. 移除不兼容的旧依赖
删除pom.xml中如下spring-cloud-security依赖配置:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-security</artifactId> <version>2.2.5.RELEASE</version> </dependency>
2. 确认核心依赖完整性
你已经引入的如下依赖已经满足新版TokenRelay的运行要求,无需额外新增依赖:
spring-cloud-starter-gateway:包含新版org.springframework.cloud.gateway.filter.factory.TokenRelayGatewayFilterFactory实现spring-boot-starter-oauth2-client:提供OAuth2客户端能力,是TokenRelay自动装配的前置条件
3. 修正导包路径
将路由配置类中的TokenRelayGatewayFilterFactory导包替换为新版路径:
import org.springframework.cloud.gateway.filter.factory.TokenRelayGatewayFilterFactory;
4. 可选:手动注册Bean(自动装配失效时使用)
如果完成上述步骤后仍然提示找不到Bean,可以在配置类中手动注册该Bean:
@Bean public TokenRelayGatewayFilterFactory tokenRelayGatewayFilterFactory() { return new TokenRelayGatewayFilterFactory(); }
验证
重启项目后,TokenRelayGatewayFilterFactory的注入逻辑即可正常运行,Token会自动通过Authorization头向下游服务转发。
内容的提问来源于stack exchange,提问作者Sulthan
相关产品推荐
相关产品推荐

