升级至Spring Boot2.5.1与Spring Cloud2020.0.3时zuul、ribbon依赖版本缺失报错如何解决
问题根因
Spring Cloud 从2020.0.x(代号Ilford)版本开始,正式移除了所有已进入维护模式的Netflix OSS组件的依赖管理声明,其中就包含spring-cloud-starter-netflix-zuul和spring-cloud-starter-netflix-ribbon,因此你引入的spring-cloud-dependencies:2020.0.3 BOM中没有这两个依赖的版本号,才会触发版本缺失的报错。
解决方案
方案1:短期兼容(手动指定版本,不替换现有组件)
如果你暂时不想修改现有业务代码,可以手动为这两个依赖指定最后一个可用的兼容版本2.2.10.RELEASE,修改依赖声明即可:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> <version>2.2.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>2.2.10.RELEASE</version> </dependency>
注意:该方案仅为临时过渡方案,zuul和ribbon已经停止官方更新,后续可能存在兼容性和安全风险
采用该方案时还需要在项目配置文件中添加配置,开启Ribbon的自动配置支持:
spring.cloud.loadbalancer.ribbon.enabled=true
方案2:长期适配(替换为官方推荐组件,建议采用)
这是Spring官方推荐的升级路径,后续维护性和兼容性更有保障:
- 网关组件替换:将
spring-cloud-starter-netflix-zuul替换为spring-cloud-starter-gateway,Spring Cloud Gateway是官方推出的第二代网关,性能更高,支持响应式编程 - 负载均衡组件替换:将
spring-cloud-starter-netflix-ribbon替换为spring-cloud-starter-loadbalancer,这是官方推出的新一代负载均衡组件,兼容现有的负载均衡调用逻辑
替换后不需要额外指定版本,直接从spring-cloud-dependencies:2020.0.3的BOM中即可继承到正确的版本号。
内容的提问来源于stack exchange,提问作者Bond1705
相关产品推荐
相关产品推荐

