踩坑SpringBoot2.5.2+Consul注册中心

踩坑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.cloudgroupId>
    <artifactId>spring-cloud-starter-consul-discoveryartifactId>
dependency>

2.SpringCloud


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-dependenciesartifactId>
            <version>Finchley.RELEASEversion>
            <type>pomtype>
            <scope>importscope>
        dependency>
    dependencies>
dependencyManagement>

3.当时用的SpringBoot版本:

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.5.2version>
    <relativePath/> 
parent>
  1. 修改配置文件
server:
  port: 8881
spring:
  application:
    name: hello-consul
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        serviceName: ${spring.application.name}    # 注册到consul的服务名称

使用上面的配置,在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)上找到了答案,如下图:
踩坑SpringBoot2.5.2+Consul注册中心_第1张图片
我使用的版本是2.5.2,属于是2.5x。所以应该尝试使用2020.0.3版本

问题就出在这里:
我复制过来的代码把Spring Cloud的依赖的版本写成了(虽然我也大不了解Finchley.RELEASE是啥意思):

 <version>Finchley.RELEASEversion>

而我写的Spring Boot的版本

<version>2.5.2version>

所以我应该将spring Cloud的版本改成:

 <version>2020.0.3version>

所以关于版本问题以后一定要严谨,在官网确定一下

这样在理论上就没啥毛病了

但是我在idea中改完之后idea报错了

版本号变红,说的大概是无法解析依赖而且还无法通过编译(这是两三天之前搞的,当时也没有截图)

再三检查代码和各种信息是正确的之后

发现还是报错,这就很令人头大。。。
在网上找了好久未果,然后我尝试删除缓存并重启:

1. 删除下载到本地的依赖

到:C:\Users{你的用户名}.m2\repository\org\springframework\cloud\spring-cloud-dependencies
目录下,会发现你下载过的依赖的jar包或其pom不同版本,我们所要做的是 全选删除

2. 删除idea的缓存信息并重启idea

(我的是idea 2021.1)
踩坑SpringBoot2.5.2+Consul注册中心_第2张图片
点击蓝色的选项,会出现下图
踩坑SpringBoot2.5.2+Consul注册中心_第3张图片
(对于窗口中的选项,我全勾选了,对于使用idea打开项目特别多的大佬请慎重,如果东西特别特别多全部删除并重启,可能会有点慢)
选择好之后点击清除并重新启动
重启idea等待一段时间,等待依赖下载完毕,和索引编制完成,理论上就没有问题了,idea应该就不会报错了。
这时如果还报错,任意调换以上两个步骤顺序多试几次,直到不报错为止(应该一次就好),这是种玄学操作。我记得我当时试了两三次(当时也没抱啥希望)。后来遇到了类似的基本上一次就可以。
然后服务就可以启动啦

你可能感兴趣的:(SpringBoot,spring,intellij-idea)