目录
一、问题描述
定制软件开发今天在使用SpringCloud定制软件开发做负载均衡策略修改时,定制软件开发做了对应配置如下:
- @Bean
- public IRule getRandomRule() {
- return new RandomRule();//创建“随机”负载均衡策略,默认策略是“轮询”
- }
然而发现无论如何都引用不了IRule和RandomRule。始终报红色提示,如下图所示:
实际上,它们都位于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。
最在查询了一番,选定了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>
不再报错,成功解决!