【原创】SpringCloud关于版本号的正确使用姿势(Hoxton)

SpringCloud最让新手头疼的就是它的版本号问题,一旦版本号匹配不上就会报各种奇奇怪怪的错,简直令人抓狂!!

其实SpringCloud已经非常友善了,版本管理也是相当的简单,只是新手不懂罢了。首先去官网,这里以SpringCloud的Hoxton.SR7版本来举例子,这是到2020年8月20日最新的SpringCloud版本了。

官网地址:https://spring.io/projects/spring-cloud/

SpringCloud的由于包含了一大堆微服务,而且各个微服务的版本号都不一样,所以SpringCloud的版本命名是通过英文单次首字母顺序决定的,这些英文单词都是伦敦地铁站的名字,目前为止是H版,也就是Hoxton(霍斯顿),前一个版本是Greenwich(格林威治)

Hoxton后面的SR7代表的是第7个正式发布版

其中最令人头大的是SpringCloud对应的微服务SpringBoot的版本,其实官网上写的也非常清楚了:

也是说我现在的Hoxton版本是SR7,超过了SR5,SpringBoot的版本必须是2.3.x,否则就会出各种意想不到的问题,比如ClassNotFound,Unable to start embedded Tomcat等等。

那有人就要问了,我这个SpringBoot的版本号是要我一个个去找吗?我从哪里可以找到呢?这里我推荐两个网站:

https://mvnrepository.com/

https://package-search.jetbrains.com/

 

…………谁会这么蠢去一个个找版本号呢~

SpringCloud早就为开发者准备好了版本对应清单:

在根项目的pom中引入:

    <properties>
        <spring-cloud.version>Hoxton.SR7</spring-cloud.version>
        <spring-boot-starter-parent.version>2.3.3.RELEASE</spring-boot-starter-parent.version>
    </properties>

这些是版本号信息,第一个是SpringCloud的版本号,我这里使用Hoxton.SR7。第二个是SpringBoot微服务对应的版本号。当然spring-boot-starter-parent具体的版本号还是要去找的,当然只要找这一次就行了。

然后加上:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring-boot-starter-parent.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

这样就完成了通过父项目管理子项目版本号的目的了,那么所有继承这个父项目的子项目的所有版本都被自动管理,看一下spring-boot-starter-parent的源码就知道原因了:

之后所有子项目的dependency标签都不需要写version标签了,由父项目统一管理了,除非是父项目没有的。

子项目pom截图:

我看的是B站狂神的SpringCloud教程,他这一点根本没说,害我去堆<properties>标签中的内容,结果我堆了一大堆,报了一大堆莫名其妙的错,最后两个标签就完事了,浪费了我一大堆时间。

最后补充说明一下:

eureka-client、eureka-server、zuul,这几个微服务的artificialId必须是带netflix的版本才能用!!!!不带netflix的只有到1.4.7.RELEASE!!!!网上一大堆教程里说的都是错的!!完全过时了,如果使用了这些不带netflix的会导致一些莫名奇妙的问题!!

还有一点,zuul服务端必须是spring-cloud-starter-netflix-zuul,带有starter的,不带starter的也会报错!!

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值