SpringCloud无法引用IRule?

3 篇文章 0 订阅
2 篇文章 0 订阅

目录

一、问题描述

二、解决历程

三、解决方案


一、问题描述

         今天在使用SpringCloud做Ribbon负载均衡策略修改时,做了对应配置如下:

    @Bean
    public IRule getRandomRule() {
        return new RandomRule();//创建“随机”负载均衡策略,默认策略是“轮询”
    }

         然而发现无论如何都引用不了IRuleRandomRule。始终报红色提示,如下图所示:

         实际上,它们都位于com.netflix.loadbalancer这个包下。

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;

二、解决历程

         首先我想到的是:难道Maven需要导入Ribbon的依赖?虽然百度说SpringCloud已经集成了Ribbon,但是我还是抱着试一试的心态添加了。

        <!-- Ribbon组件 -->
        <dependency>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!--SpringCloud集成Ribbon组件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

    <!-- 如果在maven中找不到,就去SpringCloud仓库找 -->
        <repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/libs-milestone</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>

         随后我在此基础上也做了“万变不离其宗”的修改,但基本都是即使解决了,也会报错。这些方案都只能证明无效!


三、解决方案

         最后,思考良久打算从SpringBoot和SpringCloud的版本入手。我们都知道,SpringBoot与SpringCloud版本需要对应。而我是使用IDEA自带的SpringBoot模板生成的,它默认的SpringBoot版本是2.5.2

         最在https://start.spring.io/actuator/info查询了一番,选定了SpringBoot2.5.2 + SpringCloud2020.0.3的版本组合。

"spring-cloud": {
            "Hoxton.SR12": "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1", 
            "2020.0.0-M3": "Spring Boot >=2.4.0.M1 and <=2.4.0.M1", 
            "2020.0.0-M4": "Spring Boot >=2.4.0.M2 and <=2.4.0-M3", 
            "2020.0.0": "Spring Boot >=2.4.0.M4 and <=2.4.0", 
            "2020.0.3": "Spring Boot >=2.4.1 and <2.5.3-SNAPSHOT", 
            "2020.0.4-SNAPSHOT": "Spring Boot >=2.5.3-SNAPSHOT"
        }

         于是,经过不断尝试我降低了版本。最后选定了SpringBoot2.3.4.RELEASE + SpringCloudHoxton.SR12的版本组合,终于成功

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
    </properties>

         不再报错,成功解决!

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT-NSD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值