笔者已经写过不少的实战类的文章,经常会有人问我:“代码是从你那里copy的,步骤也是按照你的方法做的,为什么报错?”。如果再加上质问的语气词,就真的让人非常讨厌!同样是九年义务教育,人教版课本,为什么有人上了985,而有的人却在搬砖? 扯远了,回归正题。实际上一个程序是否能够正确的运行,影响因素是方方面面的,最常规的因素就是代码是否写的正确。但除此之外,还有你的运行环境、版本兼容度、甚至编写代码的程序员的心态等等,都是影响程序能否正确运行的因素,而且非常重要。这一点在Spring Cloud微服务工程中体现的尤为明显。 如果你使用了Spring Cloud 及 Spring Cloud Alibaba、Spring Boot,你该如何确定具体该使用哪一个版本?**本文就带你从官网提炼一下:该如何确定版本号保证兼容性?重点体现一下这个思考过程,和官网中留下的版本选型依据信息** 笔者的版本号选型之路,遵循一个原则:**遵循官方建议的基础上、尽量使用最新GA版(GA是指General Availability,正式发布版本)!** Why?大牛以前都告诉我们,选型不要用最新版的。新版的bug多,我现在还用java8呢。通常来说是这样的,新版本功能性更强,老版本的稳定性更佳。 但Spring Cloud情况有点特殊,它是一个实实在在的“版本帝”,而且其组件的更新换代速度让人瞠目结舌,社区的发展速度和活跃度都非常高,这就带来一个问题,发展越快坑就越多,上一个版本的坑还没填完,新版本新功能新特性就出来了。**所以很难去说:老版本维护时间长bug少,新版本的bug多。因此我们倒不如就尽量使用新版本,获得更多的功能性提升。** > 以下截图取自2020年3月15日,本文为作者原创,禁止转载!日子特殊哈! ## 一、Spring Boot 版本 下面的截图,截取自Spring Boot的github仓库的wiki:[https://github.com/spring-projects/spring-boot/wiki](https://github.com/spring-projects/spring-boot/wiki),github中最新的版本是2.3,但wiki中明确说到2.2版本是目前正在支持维护的版本。 ![](https://img.kancloud.cn/f0/a0/f0a03001850f73a2263201592eea51ce_944x150.png) 这与Spring Boot官方网站中的说明是一致的,下图截取自Spring Boot官方网站。 ![](https://img.kancloud.cn/85/53/8553a90573dd31598d6759491d8cbc31_1075x495.png) ## 二、Spring Cloud版本 Spring Cloud版本的版本号命名比较特殊,它是使用伦敦地铁站的站名作为版本号的。从A、B、C、D、E,目前是Hoxton SR3版本(我们简称H版),SR是service releases的缩写。 ![](https://img.kancloud.cn/e8/9b/e89b58a5919f4321885c3c5e944c11d4_1076x648.png) ## 三、兼容性基础约束 在Spring Cloud官网的OverView预览中[https://spring.io/projects/spring-cloud/#overview](https://spring.io/projects/spring-cloud/#overview),明确有如下信息: ![](https://img.kancloud.cn/02/00/02007a1cf5325dc6ceac4e4078524932_1022x366.png) 也就是说:如果你使用Spring Cloud Hoxton,Spring Boot版本就要使用2.2.x。如果你是老项目,使用的是Spring Cloud Greenwich,Spring Boot版本就要使用2.1.x。 我们可以通过访问“/actuator/info”JSON服务端点,[https://start.spring.io/actuator/info](https://start.spring.io/actuator/info) ![](https://img.kancloud.cn/f7/d3/f7d37101c2064b2be216d87ed56d043a_904x242.png) 从以上的JSON响应信息中心,我们明确的看到:如果你是用Spring Cloud Hoxton,需要使用Spring Boot 2.2.0以上,2.2.6以下。如果你同时使用到了Spring cloud alibaba,Spring Boot 2.2.0以上,2.3.0以下。 ## 四、Spring Cloud Reference 最后我们来看一下Spring Cloud Reference文档内部: [https://cloud.spring.io/spring-cloud-static/Hoxton.SR3/reference/html/spring-cloud.html](https://cloud.spring.io/spring-cloud-static/Hoxton.SR3/reference/html/spring-cloud.html) 开篇截图: ![](https://img.kancloud.cn/b0/ef/b0ef54bef0263b1e9d781213ecf0bf75_1198x408.png) 所以我们最终选型是 |库|版本| |----|----| |Spring Cloud|Hoxton SR3| |Spring Boot|2.2.5.RELEASE| ## 五、Spring Cloud Alibaba [spring-cloud-alibaba与spring-cloud和spring-boot之间的版本说明](https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E) | Spring Cloud Version | Spring Cloud Alibaba Version | Spring Boot Version | | --- | --- | --- | | Spring Cloud Hoxton.SR3(选)| 2.2.1.RELEASE(选)| 2.2.5.RELEASE(选)| | Spring Cloud Hoxton.RELEASE| 2.2.0.RELEASE| 2.2.X.RELEASE| | Spring Cloud Greenwich | 2.1.1.RELEASE | 2.1.X.RELEASE| | Spring Cloud Finchley | 2.0.1.RELEASE| 2.0.X.RELEASE| | Spring Cloud Edgware | 1.5.1.RELEASE | 1.5.X.RELEASE |