一、前言
在搭建SpringCloud
項目環境架構的時候,需要選擇SpringBoot
和SpringCloud
進行兼容的版本號,因此對于選擇SpringBoot
版本與SpringCloud
版本的對應關系很重要,如果版本關系不對應,常見的會遇見項目啟動不起來,怪異的則會是你的項目出現一些詭異的問題,查資料也不好查。下面就收集一下SpringBoot
與SpringCloud
版本之間的對應關系,在搭建項目框架或者學習時按照對應的版本區間進行選擇即可,避免走一些不必要的彎路。
1. 歷史版本圖
Release train Spring Boot compatibility
Spring Cloud Release Train
Spring Boot Version
Hoxton
2.2.x
Greenwich
2.1.x
Finchley
2.0.x
Edgware
1.5.x
Dalston
1.5.x
Camden
1.4.x
Brixton
1.3.x
Angle
1.2.x
注意: 官方通告SpringBoot1.5.x
及以下版本官方不再提供維護了,建議開發者選擇使用SpringBoot2.0.x
以上的版本,相對應的SpringCloud
版本也最好不要使用。
二、查看版本關系
訪問Spring
官方地址,可獲取SpringBoot
和SpringCloud
版本對應信息。
地址如下:
https://start.spring.io/actuator/info
JSON格式如下:
JSON["bom-ranges"]["spring-cloud"]["Finchley.M9"]◣
Path:
JSON["bom-ranges"]["spring-cloud"]["Finchley.M9"]Key:
Finchley.M9: Copy deURI deBase64 aLine Copied!Modify
+Expand all -Collapse all Expand node Scroll to nodeShow value Show img Show array leng Show ico
JSON
git
commit
time2020-04-17T16:18:36Z
id7f707c1
branch7f707c17bed34a13b5bc9d5d58c71fc5a901c335
build
version0.0.1-SNAPSHOT
artifactstart-site
namestart.spring.io website
versions
initializr0.9.0.BUILD-SNAPSHOT
spring-boot2.2.6.RELEASE
groupio.spring.start
time2020-04-17T16:19:53.303Z
bom-ranges
azure
2.0.10Spring Boot >=2.0.0.RELEASE and <2.1.0.RELEASE
2.1.7Spring Boot >=2.1.0.RELEASE and <2.2.0.M1
2.2.0Spring Boot >=2.2.0.M1
codecentric-spring-boot-admin
2.0.6Spring Boot >=2.0.0.M1 and <2.1.0.M1
2.1.6Spring Boot >=2.1.0.M1 and <2.2.0.M1
2.2.1Spring Boot >=2.2.0.M1
solace-spring-boot
1.0.0Spring Boot >=2.2.0.RELEASE and <2.3.0.M1
solace-spring-cloud
1.0.0Spring Boot >=2.2.0.RELEASE and <2.3.0.M1
spring-cloud
Finchley.M2Spring Boot >=2.0.0.M3 and <2.0.0.M5
Finchley.M3Spring Boot >=2.0.0.M5 and <=2.0.0.M5
Finchley.M4Spring Boot >=2.0.0.M6 and <=2.0.0.M6
Finchley.M5Spring Boot >=2.0.0.M7 and <=2.0.0.M7
Finchley.M6Spring Boot >=2.0.0.RC1 and <=2.0.0.RC1
Finchley.M7Spring Boot >=2.0.0.RC2 and <=2.0.0.RC2
Finchley.M9Spring Boot >=2.0.0.RELEASE and <=2.0.0.RELEASE
Finchley.RC1Spring Boot >=2.0.1.RELEASE and <2.0.2.RELEASE
Finchley.RC2Spring Boot >=2.0.2.RELEASE and <2.0.3.RELEASE
Finchley.SR4Spring Boot >=2.0.3.RELEASE and <2.0.999.BUILD-SNAPSHOT
Finchley.BUILD-SNAPSHOTSpring Boot >=2.0.999.BUILD-SNAPSHOT and <2.1.0.M3
Greenwich.M1Spring Boot >=2.1.0.M3 and <2.1.0.RELEASE
Greenwich.SR5Spring Boot >=2.1.0.RELEASE and <2.1.14.BUILD-SNAPSHOT
Greenwich.BUILD-SNAPSHOTSpring Boot >=2.1.14.BUILD-SNAPSHOT and <2.2.0.M4
Hoxton.SR3Spring Boot >=2.2.0.M4 and <2.3.0.BUILD-SNAPSHOT
Hoxton.BUILD-SNAPSHOTSpring Boot >=2.3.0.BUILD-SNAPSHOT
spring-cloud-alibaba
2.2.0.RELEASESpring Boot >=2.2.0.RELEASE and <2.3.0.M1
spring-cloud-services
2.0.3.RELEASESpring Boot >=2.0.0.RELEASE and <2.1.0.RELEASE
2.1.7.RELEASESpring Boot >=2.1.0.RELEASE and <2.2.0.RELEASE
2.2.3.RELEASESpring Boot >=2.2.0.RELEASE and <2.3.0.M1
spring-statemachine
2.0.0.M4Spring Boot >=2.0.0.RC1 and <=2.0.0.RC1
2.0.0.M5Spring Boot >=2.0.0.RC2 and <=2.0.0.RC2
2.0.1.RELEASESpring Boot >=2.0.0.RELEASE
vaadin
10.0.17Spring Boot >=2.0.0.M1 and <2.1.0.M1
14.1.25Spring Boot >=2.1.0.M1
dependency-ranges
okta
1.2.1Spring Boot >=2.1.2.RELEASE and <2.2.0.M1
1.4.0Spring Boot >=2.2.0.M1
mybatis
2.0.1Spring Boot >=2.0.0.RELEASE and <2.1.0.RELEASE
2.1.2Spring Boot >=2.1.0.RELEASE
geode
1.2.6.RELEASESpring Boot >=2.2.0.M5 and <2.3.0.M1
1.3.0.M3Spring Boot >=2.3.0.M1 and <2.3.0.BUILD-SNAPSHOT
1.3.0.BUILD-SNAPSHOTSpring Boot >=2.3.0.BUILD-SNAPSHOT
camel
2.22.4Spring Boot >=2.0.0.M1 and <2.1.0.M1
2.25.1Spring Boot >=2.1.0.M1 and <2.2.0.M1
3.2.0Spring Boot >=2.2.0.M1
三、如何選擇SpringBoot與SpringCloud版本號
項目搭建初期,如何對SpringBoot
和SpringCloud
的一個相互兼容性版本號進行選擇,這是很重要的一步,例如SpringCloud
的Hoxton.SR3
這個版本,他對應的"Spring Boot >=2.2.0.M4 and <2.3.0.BUILD-SNAPSHOT"
版本,意思就是如果選擇使用SpringCloud
的Hoxton.SR3
這個版本,那么SpringBoot
的版本需要大于等于2.2.0小于2.3.0
即可滿足兼容性。
1. 引入SpringCloud版本管理
官方提供了管理Spring Cloud
每個版本兼容的pom
,引入下面依賴管理信息即可:
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR3</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
2. 使用Spring Boot
Spring Boot
可以也像父工程那樣管理自己內部的兼容版本號,如下:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent>
四、SpringBoot、SpringCloud、SpringCloudAlibaba版本對應關系
由于Spring Cloud
基于Spring Boot
構建,而Spring Cloud Alibaba
又基于Spring Cloud Common
的規范實現,所以當我們使用``Spring Cloud Alibaba`來構建微服務應用的時候,需要知道這三者之間的版本關系。
下表整理了目前Spring Cloud Alibaba
的版本與Spring Boot
、Spring Cloud
版本的兼容關系:
1. 畢業版本依賴關系(推薦使用)
Spring Cloud Version
Spring Cloud Alibaba Version
Spring Boot Version
Spring Cloud Hoxton.SR8
2.2.3.RELEASE
2.3.2.RELEASE
Spring Cloud Greenwich.SR6
2.1.3.RELEASE
2.1.13.RELEASE
Spring Cloud Hoxton.SR8
2.2.2.RELEASE
2.3.2.RELEASE
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.2.RELEASE
2.1.X.RELEASE
Spring Cloud Finchley
2.0.3.RELEASE
2.0.X.RELEASE
Spring Cloud Edgware
1.5.1.RELEASE(停止維護,建議升級)
1.5.X.RELEASE
五. Spring Cloud Alibaba與組件版本關系
Spring Cloud Alibaba
是基于Spring Cloud Common
的規范實現,而Spring Cloud Alibaba
的各個微服務組件依賴于Spring Cloud Alibaba
自身,因此我們需要知道Spring Cloud Alibaba
與其自身微服務組件之間的版本關系。
下表整理了目前Spring Cloud Alibaba
的版本與Sentinel
、Nacos
、RocketMQ
、Dubbo
、Seata
版本的兼容關系:
1. 組件版本關系
Spring Cloud Alibaba Version
Sentinel Version
Nacos Version
RocketMQ Version
Dubbo Version
Seata Version
2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE
1.8.0
1.3.3
4.4.0
2.7.8
1.3.0
2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE
1.7.1
1.2.1
4.4.0
2.7.6
1.2.0
2.2.0.RELEASE
1.7.1
1.1.4
4.4.0
2.7.4.1
1.0.0
2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE
1.7.0
1.1.4
4.4.0
2.7.3
0.9.0
2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE
1.6.3
1.1.1
4.4.0
2.7.3
0.7.1
六、依賴管理
Spring Cloud Alibaba BOM
包含了它所使用的所有依賴的版本。
1. RELEASE 版本
Spring Cloud Hoxton
如果需要使用 Spring Cloud Hoxton
版本,請在 dependencyManagement
中添加如下配置
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.3.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>
然后在dependencies
中添加自己所需使用的依賴即可使用。
Spring Cloud Greenwich
如果需要使用 Spring Cloud Greenwich
版本,請在 dependencyManagement
中添加如下配置
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.3.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>
然后在 dependencies
中添加自己所需使用的依賴即可使用。
Spring Cloud Finchley
如果需要使用 Spring Cloud Finchley
版本,請在 dependencyManagement
中添加如下配置
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.0.3.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>
然后在dependencies
中添加自己所需使用的依賴即可使用。
Spring Cloud Edgware
如果需要使用 Spring Cloud Edgware
版本,請在 dependencyManagement
中添加如下配置
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>1.5.1.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>
然后在 dependencies
中添加自己所需使用的依賴即可使用。
2. 版本管理規范
項目的版本號格式為 x.x.x 的形式,其中 x 的數值類型為數字,從 0 開始取值,且不限于 0~9 這個范圍。項目處于孵化器階段時,第一位版本號固定使用 0,即版本號為 0.x.x 的格式。
由于 `Spring Boot 1 和 Spring Boot 2 在 Actuator 模塊的接口和注解有很大的變更,且 spring-cloud-commons 從 1.x.x 版本升級到 2.0.0 版本也有較大的變更,因此我們采取跟 SpringBoot 版本號一致的版本:
- 1.5.x 版本適用于 Spring Boot 1.5.x
- 2.0.x 版本適用于 Spring Boot 2.0.x
- 2.1.x 版本適用于 Spring Boot 2.1.x
- 2.2.x 版本適用于 Spring Boot 2.2.x