Spring Cloud Alibaba 0.9.0 升級到 2.1.0 手把手教程

  • 2019 年 11 月 26 日
  • 筆記

TIPS 本文基於Spring Cloud Greenwich SR3編寫,理論支持Spring Cloud Greenwich所有版本。 對於非Greenwich版本,請前往 https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明 查看Spring Cloud與Spring Cloud Alibaba的版本兼容性關係,自行升級到對應的兼容版本。例如:你用的是Spring Cloud Finchley,那麼應使用Spring Cloud Alibaba 2.0.0,以此類推。

最近,Spring Cloud Alibaba已經從Spring Cloud孵化器中孵化成功。孵化成功後的最新版本是2.1.0。這一節來詳細探討如何將Spring Cloud Alibaba從0.9.0升級到2.1.0。

從0.9.0開始,Maven的Group id發生了變化!

•0.9.0的Group id是 org.springframework.cloud•0.9.0以上的版本是 com.alibaba.cloud

這看起來還挺嚇人的,而且此前也引發了一些吐槽。其實這主要是由於Spring Cloud考慮簡化自己的Release Train(即:Spring Cloud自身的版本管理),於是修改了發佈政策:非Spring Cloud團隊維護的Spring Cloud的子項目,一律使用自己的GroupId即可,不再強制使用 org.springframework.cloud

TIPS 詳見:https://spring.io/blog/2019/07/24/simplifying-the-spring-cloud-release-train[1]

從功能上講,Spring Cloud Alibaba 2.1.0和0.9.0區別並不大,所以升級還是比較輕鬆的。下面列出升級的具體步驟:

一、升級依賴管理器

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-alibaba-dependencies</artifactId>    <version>0.9.0.RELEASE</version>    <type>pom</type>    <scope>import</scope>  </dependency>

修改為:

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-alibaba-dependencies</artifactId>    <version>2.1.0.RELEASE</version>    <type>pom</type>    <scope>import</scope>  </dependency>

其實就是改個groupId以及version。

二、升級Starter

將Spring Cloud Alibaba所有相關的Starter依賴(即以 spring-cloud-starter-alibaba- 開頭的所有依賴),的groupId,全部更換成com.alibaba.cloud

例如:將:

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  </dependency>

修改為:

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  </dependency>

三、升級Server軟件版本

由於Spring Cloud Alibaba使用了Nacos、Sentinel Dashboard、RocketMQ,所以還得升級這三款軟件的Server端。

TIPS 普及一個技巧:可根據客戶端版本,去下載相同版本/兼容版本的Server端。 舉個例子: •通過分析,可以發現 spring-cloud-starter-alibaba-nacos-discovery 使用了Nacos Client 1.1.1,所以下載Nacos Server 1.1x 肯定是兼容的。 當然,其實在官方文檔 https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明

分別下載:

•Nacos Server 1.1.x•Sentinel Dashboard 1.6.x•RocketMQ 4.4.x(筆者經過測試,使用RocketMQ 4.5.1也是OK的)

四、修正編譯報錯

如果你使用了原Spring Cloud Alibaba的一些類,那麼升級後,很可能會報錯。這主要是因為,Spring Cloud Alibaba的包名結構也發生了變化。原先的包結構是 org.springframework.cloud.xxx ,升級後包名也改成了com.alibaba.cloud.xxx

重新導一下包一下就OK了。