踩坑SpringBoot2.5.2+Consul注册中心
最近在跟着书上和一些资料学习Java 微服务,上面有一句话:”Spring Boot2.1之后的版本会出现Consul服务注册商的问题,······,由于版本太新,网上也没有相应的解决方案“(2019年的),激发了我的踩坑欲望,所以学习的时候Spring Boot使用了比较新的2.5.2。记录一下踩坑过程,仅供参考。
一. Consul的安装和版本
在官网下载二进制文件,解压配置环境变量即可。 当前使用的版本: 当然,使用之前先启动: consul agent -dev
二. 依赖、配置
1、先上来,我直接复制资料提供的源代码中的xml:
配置依赖:
1.Consul
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
2.SpringCloud
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.当时用的SpringBoot版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/>
</parent>
- 修改配置文件
server:
port: 8881
spring:
application:
name: hello-consul
cloud:
consul:
host: localhost
port: 8500
discovery:
serviceName: ${spring.application.name}
使用上面的配置,在idea中更新pom配置后没有显示错误 但启动时,就报错了,类似于下面: name ‘configurationPropertiesBeans’ defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class] 我检查过代码和所有配置,idea也没有报错,但就是启动时就崩掉,以前还真没遇到过这种情况 在网上搜了好久,发现是Spring Boot和Spring Cloud版本不对应问题 为什么会出现版本不对应呢?我连代码都是复制的呀 本着有问题就找官方文档的原则,我在官网(https://spring.io/projects/spring-cloud#overview)上找到了答案,如下图: 我使用的版本是2.5.2,属于是2.5x。所以应该尝试使用2020.0.3版本
问题就出在这里: 我复制过来的代码把Spring Cloud的依赖的版本写成了(虽然我也大不了解Finchley.RELEASE是啥意思):
<version>Finchley.RELEASE</version>
而我写的Spring Boot的版本
<version>2.5.2</version>
所以我应该将spring Cloud的版本改成:
<version>2020.0.3</version>
所以关于版本问题以后一定要严谨,在官网确定一下
这样在理论上就没啥毛病了
但是我在idea中改完之后idea报错了
版本号变红,说的大概是无法解析依赖而且还无法通过编译(这是两三天之前搞的,当时也没有截图)
再三检查代码和各种信息是正确的之后
发现还是报错,这就很令人头大。。。 在网上找了好久未果,然后我尝试删除缓存并重启:
1. 删除下载到本地的依赖
到:C:\Users{你的用户名}.m2\repository\org\springframework\cloud\spring-cloud-dependencies 目录下,会发现你下载过的依赖的jar包或其pom不同版本,我们所要做的是 全选删除
2. 删除idea的缓存信息并重启idea
(我的是idea 2021.1) 点击蓝色的选项,会出现下图 (对于窗口中的选项,我全勾选了,对于使用idea打开项目特别多的大佬请慎重,如果东西特别特别多全部删除并重启,可能会有点慢) 选择好之后点击清除并重新启动 重启idea等待一段时间,等待依赖下载完毕,和索引编制完成,理论上就没有问题了,idea应该就不会报错了。 这时如果还报错,任意调换以上两个步骤顺序多试几次,直到不报错为止(应该一次就好),这是种玄学操作。我记得我当时试了两三次(当时也没抱啥希望)。后来遇到了类似的基本上一次就可以。 然后服务就可以启动啦
|