springcloud版本_史上讲解最详细:版本号命名的前世今生(SpringCloud版本原来是这么回事-值得收藏 - 299...

相关历史文章(阅读本文之前,您可能需要先看下之前的系列 )

为数据可视化赋能Spring Boot Admin - 第297篇 超实用的康奈尔笔记法 我命由我不由天,我的UI我做主「定制Spring Boot Admin UI的页面」- 第298篇
国内最全的Spring Boot系列之三
史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇

23afb73d1ab209e6c88f0fc18f411709.png

悟纤:师傅,Spring Cloud的版本怎么都是英文呐、SR2、SR5、GA又是啥东东?

师傅:那不是什么你的东东,是你的西西。

5129c023afc474e49050546011a5ff6c.png

悟纤:师傅,你看你,你看你,好家伙~ 你学坏了!

师傅:我看是你自己又脑洞大开了。

151abace730984529aca5295f3b5fcb9.png

悟纤:我脑袋又没有洞,怎么能大开呐。

师傅:杠精就是你吧。

e9c303dc850883d11131d79012439644.png

悟纤:师傅,请多指教; 给我一个喷点,我能杠了整个地球。

师傅:今天不杠倒你,为师就不信了。

adc1f76f9cd67df64f8bff012731ca28.png

一、数字版本号 – 偷下荤

fe4df845e47eba27a2401cbf0e29197a.png

师傅:徒儿,先从最简单的数字版本号开始,你来说说看Spring Boot2.1.5版本号是什么意思?

徒儿:不就是Spring Boot的版本号是2.1.5的版本嘛,2代表这是第二代的SpringBoot, 1的就是迭代版本,5的话就是bug修复吧??

师傅:嗯嗯,回答的不赖,下面敲重点:

(1)其中2: 表示的主版本号,表示是我们的SpringBoot第二代产品。
(2)其中1: 表示的是次版本号,增加了一些新的功能但是主体的架构是没有变化的,是兼容的。
(3)其中5: 表示的是bug修复版。
(4)所以2.1.5合起来就是springboot的第二代版本的第1个小版本的第5次bug修复版本。

结论:版本格式 -> 主版本号.子版本号.修正版本号。

师傅:徒儿,你知道这个版本号的递增规则不?

悟纤:请师傅赐教。

2e016fc9c95846c223ee21eb6ed6f564.gif

师傅:容我思考下,怎么跟你说说。

98ea1c457368d362e24995c5e22f7b19.gif
主版本号:当你做了不兼容的 API 修改或者进行了大调整;
子版本号:当你做了向下兼容的功能性新增;
修订号:当你做了向下兼容的问题修正;

所以,我们就可以知道,SpringBoot 1.x的版本和Spring Boot 2.x是无法直接通过修改版本号就可以升级的,但是如果要从2.1.5升级到截止到2020年3月6日的2.2.5版本的话,简单修改下版本就可以成功升级了。

二、尾巴带文字 – 牛逼的一批

师傅:我们会发现在使用版本的时候,还有一个点后缀.RELEASE,这又是什么意思呢?

悟纤:这不就是正式版本嘛。

师傅:那么.SR1、.M1呐?

悟纤:这又是什么幺儿子?

师傅:这个相比上面稍微复杂点,且耐心听为师给你讲。

snapshot 快照
alpha 内测
beta 公测
release 稳定版本
GA 最稳定版本
Final 正式版
Pro(professional) 专业版
Plus 加强版
Retail 零售版
DEMO 演示版
Build 内部标号
Delux 豪华版 (deluxe:豪华的,华丽的)
Corporation或Enterpraise 企业版
M1 M2 M3 M是milestone的简写 里程碑的意思
RC 版本RC:(Release Candidate),几乎就不会加入新的功能了,而主要着重于除错
SR 修正版
Trial 试用版
Shareware 共享版
Full 完全版

师傅:这个名词是多的不得了,这里我们讲几个常见的。

build-snapshot:开发版本,也叫快照版本。当前版本处于开发中,开发完成之后,自己进行测试,另外让团队其它人也进行测试使用下;
M1...M2(Milestone):里程碑版本,在版发布之前 会出几个里程碑的版本。使用snapshot版本开发了一个时间,觉得最近写代码杠杠的,那么就整几个里程碑版本记录下吧,记录我们这个重大的时刻,是你我未来的回忆。
RC1…RC2(Release Candidates):发布候选。内部开发到一定阶段了,各个模块集成后,经过细心的测试整个开发团队觉得软件已经稳定没有问题了,可以对外发行了。
release:正式版本。发布候选差不多之后,那么说明整个框架到了一定的阶段了,可投入市场大面积使用了,那么发布出去,让广大用户来吃吃香吧。
SR1…SR2(Service Release):修正版。这是啥意思呐,这不release版本发布之后,让广大群体使用了嘛,再牛逼的架构师,也无法写出零bug的代码,那么这时候,就优先对于release版本的问题进行修复,这时候每次迭代的版本就是SR1,SR2,SR3。

那么上面的一个顺序是这样子的:

snapshot –>M1…MX –> RC1…RCX –> release –> SR1…SRX
对应的文字理解:
开发版本(BS) --(开发到一个小阶段,就要标记下)--> 里程碑版本(MX) --(版本到了一个相对稳定的阶段,可以对外发行了,但是可能还存在修复的问题,此时只做修复,不做新功能的增加)--> 发布候选(RC1) --(BUG修复完成,发布)-->正式版本(release) --(外界反馈存在一些问题,进行内部在修复)--> 修正版本(SRX)

到这里那么我们经常看到的版本号应该是这样子的:

结论:版本格式-> 主版本号.子版本号.修正版本号.软件版本阶段

三、版本后面的英文标识 – 给力给力真给力

师傅:我们会发现在网站上可以看到会标着CURRENT、PRE等等,这个又是什么意思呢?

CURRENT:当前推荐的版本
GA:稳定版,可用于生产
PRE :里程碑版/预览版本
SNAPSHOT : 快照

这里只是一个标识,方便大家在使用的时候,进行选择版本,我们一般选择是CURRENT和GA版本,SNAPSHOT打死不选。

师傅:到这里这些你可能还不见的很理解,不要慌,待会为师会亲自给你表演下。

四、Spring cloud的版本说明 – 你太牛了!!!

第一代版本:Angle,第二代版本:Brixton;
第三代版本:Camden,第四代版本:Dalston;
第五代版本: Edgware,第六代版本:Finchley;
第七代版本:GreenWich,第八代版本:Hoxton;

这种发布的版本是以伦敦地铁站作为版本命名,并按地铁站名称的首字母A-Z依次命名。为什么我们的SpringCloud会以这种方式来发布版本,因为假如我们传统的 2.1.5.release这种发布的话,SpringCloud会包含很多子项目的版本就会给人造成混

我们可以这么理解,使用英文版本的命名方式,就是为了统一管理在Spring Cloud下的子项目版本集合,否则会造成版本混乱。

五、举个栗子

5.1 Spring Boot版本真相

师傅:说的再多,说的再好,不如脱下裤子来跑一跑。

师傅:欧侯,好像说错话了,理论再多,不如举个栗子来的简单,请看大屏幕:

73fd1912af5bc8d2df70fa07fa11bb75.gif

(数据采集于:2020年3月6日星期五)

7670b2cbbae47a8246f4faa7ffe8a681.png

(1)2.2.5 CURRENT GA

2.2.5 :第二代Spring Boot的第2个小版本的第5次bug修复;
CURRENT : 这是官网当前推荐的使用版本;
GA:这是稳定版本,可用于生产环境。

那么在引入使用的时候,怎么使用呐?

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

BTW:看到没有,在引入的版本中,并没有CURRENT、GA,这两个就是告知我们这些使用Spring Boot的人:Spring Boot 2.2.5版本现在是一个稳定版本(GA),可用于生产环境了,官网大力推荐进行使用哦。

(2)2.3.0 M2 PRE

2.3.0:第二代Spring Boot的第3个小版本的第0次bug修复;
M2:这是2.3.0版本的第2次里程碑版本啦;
PRE:程碑版本/预览版本,告知我们这个是里程碑版本,先偷腥的人可以来;

那么在引入使用的时候,怎么使用呐?

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.M2</version>
    </parent>

还记得我们说的嘛,里程碑版本是记录内部开发的一个版本,所以,如果是上面这么引入的,是无法使用的,因为还未发布到官网上,那么在使用的时候,需要添加仓库:

<repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

(3)2.2.6 SNAPSHOT

2.2.6:第二代Spring Boot的第2个小版本的第6次bug修复;
SNAPSHOT:这是我们内部在开发的一个版本啦,也是对于2.2.5版本的bug迭代版本;

那么在引入使用的时候,怎么使用呐?

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.BUILD-SNAPSHOT</version>
 </parent>

当然这里也需要添加http://spring.io的repositories,这里省略…

(4)2.1.13 GA

2.1.13:第一代Spring Boot的第1个小版本的第13次bug修复;
GA:这是稳定版本,可用于生产;

2.1.13和2.2.5版本差别就在于2.2.5多了一个CURRENT标识,说明官方更推荐2.2.5版本。如果你当前在使用2.1.x版本的话,也是稳定的版本,官网也在修复此版本存在的问题。

那么在引入使用的时候,怎么使用呐?

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

5.2 Spring Cloud版本真相

师傅:Spring Boot就说这么多了,接下来,为师在带你窥视下Spring Cloud:

(下图数据采集于:2020年3月6日星期五)

23afb73d1ab209e6c88f0fc18f411709.png

(1)HoxtonSR2 CURRENT GA

Hoxton:第八代Spring Cloud版本;
SR2:修正版,修正了2次,说明release之后,进行了两次的问题修复。
CURRENT:这是官网当前推荐的版本;
GA:稳定版本,可用于生产了;

那么在引入使用的时候,怎么使用呐?

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR2</version>
        <type>pom</type>
        <scope>import</scope>
</dependency>

(2)Hoxton SNAPSHOT

Hoxton:第八代Spring Cloud版本;
SNAPSHOT:开发版本,快照版本;

那么在引入使用的时候,怎么使用呐?

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.BUILD-SNAPSHOT </version>
        <type>pom</type>
        <scope>import</scope>
</dependency>

当然这里也需要添加http://spring.io的repositories,这里省略…

5.3 Spring Cloud和Spring Boot的对应关系

1806f18722c6a8cc5c3ee458c9b917be.png

目前的Hoxton对应的Spring Boot是2.2.x

5.4 生产版本选择 – 很重要、很重要

(1): 打死不用 非稳定版本/ end-of-life(不维护)版本
(2):release版本先等等(等别人去探雷);
(3): 推荐 SR2以后的可以放心使用;

六、悟纤小结

师傅:徒儿,你说你服不服?

7065674ecab13b4efff894e7590e7b52.gif

悟纤:师傅,我对你的敬仰犹如滔滔江水连绵不绝,犹如黄河泛滥一发不可收拾。

82405e9fff8bfb7e71a1698818557ac9.png

师傅:又来拍马屁了。

悟纤:师傅,又不是马,怎能说是拍马屁呐,要说也是拍人屁。

师傅:你… 你… 你这是要气死为师吧….

悟纤:师傅,师傅,莫生气,气坏身体无人替。来来来,师傅我来给简单总结吧。

981745b1711b24c7335fc976536e45ba.gif
(1)Spring Boot版本格式:主版本号.子版本号.修正版本号.软件版本阶段。
(2)Spring Cloud版本格式:(英文)主版本号.软件阶段版本。
(3)Spring Boot 2.3.5 :表示的是Spring Boot的第二代的第3次小版本的第5次bug修复;
(4)build-snapshot:开发版本/快照版本;
(5)MX:里程碑版本;
(6)release:正式版本;
(7)SRX:修正版本;
(8)版本阶段:snapshot –> M1…MX –>RC1…RCX –> release –> SR1…SRX
(9)Spring Cloud是以伦敦地铁站作为版本名称,并按地铁站名称的首字母A-Z依次命名。
(10)Spring Boot的版本升级,发现并没有SR1...SR2的标识,所以Spring Boot这样有数字为版本的是通过最后一位数字来说明在迭代修复bug;对于Spring Cloud是英文版本号,没有数字的概念,那么就是通过.SRX的方式。

师傅:总结的不赖嘛,那师傅就来个大总结吧。

悟纤:师傅的总结要敲重点。

师傅:考试必考,哈哈,师傅的总结主要是为了方便理解。

30c6a7bd898545daf1e8c6cbad791c01.gif

(1)版本主要有三部分组成:版本号 +版本阶段+ 版本标识;

(2)版本号一般由3位数字构成:主版本号.次版本号.版本修正号(比如:Spring Boot);当框架是n个子框架的集合的时候,那么为了对子项目统一管理,这时候版本号就是:英文名称(Spring Cloud)。

(3)版本阶段:为了记录版本的各个阶段,开发阶段(snapshot) - 里程碑阶段(MX) - 发布候选(RCX)- 正式版本(release) - 修正版本(SRX);对于Spring Boot版本阶段就会比较简单,对于Spring Cloud的版本阶段基本是遵照上面的阶段。

(4)版本标识:为了方便开发使用者群体选择合适的版本,也说明了当前版本号处于一个什么情况了,常见的就是SNAPSHOT/PRE /GA/CURRENT

生产版本选择 – 很重要、很重要

(1): 打死不用 非稳定版本/ end-of-life(不维护)版本

(2):release版本先等等(等别人去探雷);

(3): 推荐 SR2以后的可以放心使用;

2cab1f357bc9bdeb6fef9ae89c2abdee.png

0d550702a131d4417d9a6c4e3287414d.gif
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值