悟纤:师傅,Spring Cloud的版本是英文的,SR2、SR5、GA是什么东东?
师傅:那不是你的东东,而是你的西西。
悟纤:师傅,你看你,你看你,好家伙~ 你学坏了!
师傅:我觉得你自己又开脑筋了。
悟纤:我头上没有洞,怎么能大开呢?
师傅:杠精就是你。
悟纤:师傅,请多指教; 给我一个喷点,我可以杠杆整个地球。
师傅:如果你今天不杠倒你,你就不会相信你是老师。
一、数字版本号 – 偷下荤
师傅:徒儿,从最简单的数字版本号开始。让我们谈谈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第二代版本的第一个小版本的第五个bug修复版本。
结论:版本格式 -> 主版本号.子版本号.修正版本号。
师傅:徒儿,你知道这个版本号的递增规则吗?
悟纤:请师傅给我建议。
师傅:让我想想,怎么告诉你。
主版本号:当你做不兼容的时候 API 修改或大调整;
子版本号:当您添加向下兼容功能时;
修订号:当您对向下兼容问题进行修正时;
所以,我们可以知道,SpringBoot 1.Spring Boot 2.x不能通过修改版本号直接升级,但如果要从2.1开始.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)
在这里,我们经常看到的版本号应该是这样的:
结论:版本格式-> 主版本号.子版本号.修正版本号.软件版本阶段
3.版本背后的英文标志 – 给力真的很厉害
师傅:我们会在网站上看到CURENT、PRE等等,这是什么意思?
CURRENT:当前推荐版本
GA:稳定版,可用于生产
PRE:里程碑版/预览版
SNAPSHOT :快照
这只是一个标志,方便每个人在使用时选择版本。我们通常选择CURENT和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版本的真相
师傅:不管你说得多多,说得多好,最好脱下裤子跑。
师傅:欧侯,好像说错话了。不管有多少理论,最好举个栗子。请看大屏幕:
(数据采集于2020年3月6日星期五)
(1)2.2.CURENTGA
2.2.5:第二代Spring Boot第二个小版本的第五次bug修复;
CURRENT :这是目前官网推荐的使用版;
GA:这是一个稳定版本,可用于生产环境。
那介绍使用时,如何使用呢?
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> </parent>
BTW:看,在引入版本中,没有CURENT、GA,这两个是告诉我们使用Spring Boot的人:Spring Boot 2.2.5版现在是稳定版(GA),可用于生产环境,官网强烈推荐使用。
(2)2.3.0 M2PRE
2.3.0:第二代Spring Boot第三个小版本的第0次bug修复;
M2:这是2.3.第二次里程碑版0版;
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第二个小版本的第六次bug修复;
SNAPSHOT:这是我们内部开发的版本,也是2.2.bug迭代版本5版本;
那介绍使用时,如何使用呢?
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.BUILD-SNAPSHOT</version> </parent>
当然,这里也需要添加spring.io的repositories,这里省略…
(4)2.1.13GA
2.1.13:第一代Spring Boot第1个小版本的第13次bug修复;
GA:这是一个可用于生产的稳定版本;
2.1.13和2.2.5版本的区别在于2.2.5有一个CURENT标志,表明官方更推荐2.2.如果您目前正在使用2.11.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日星期五)
(1)HoxtonSR2CURRENTGA
Hoxton:第八代Spring Cloud版;
SR2:修正版,修正两次,说明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>
当然,这里也需要添加spring.io的repositories,这里省略…
5.3 Spring Cloud和Spring Boot的对应关系
目前Hoxton对应的Spring Boot是2.2.x
5.4生产版本选择 – 非常重要,非常重要
(1): 打死不用 非稳定版// end-of-life(不维护)版本
(2):release版本等等(等别人去探雷);
(3):推荐 SR2以后可以放心使用;
六、悟纤总结
师傅:徒儿,你说你不服吗?
悟纤:师傅,我对你的敬仰犹如滔滔江水连绵,犹如黄河泛滥一发失控。
师傅:又来拍马屁了。
悟纤:师傅,又不是马,怎么能说是拍马屁啊,要说也是拍人屁啊。
师傅:你… 你… 你要气死为师...
悟纤:师傅,师傅,莫生气,气坏身体无人替代。来吧,师傅,我给你一个简单的总结。
(1)Spring Boot版本格式:主版本号、子版本号、修正版本号、软件版本阶段。
(2)Spring Cloud版本格式:(英文)主版本号。软件阶段版。
(3)Spring Boot 2.3.5 :Spring代表Spring Boot第二代第三小版第五次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这样的数字是通过最后一个数字来解释的;Spring Cloud是一个没有数字概念的英文版本号,所以是通过.SRX的方式。
师傅:总结还不错,那师傅就做个大总结吧。
悟纤:师傅的总结要敲重点。
师傅:考试一定要考,哈哈,师傅的总结主要是为了方便理解。
(1)版本主要由三部分组成:版本号+版本阶段+版本标识;
(2)版本号一般由三位数组成:主版本号、次版本号、版本修正号(如: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以后可以放心使用;