点击上方 "IT牧场" ,选择 "设为星标" 技术干货每日送达!
本文基于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
。
详见: 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。
将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>
由于Spring Cloud Alibaba使用了Nacos、Sentinel Dashboard、RocketMQ,所以还得升级这三款软件的Server端。
普及一个技巧:可根据客户端版本,去下载相同版本/兼容版本的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了。
最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!
• 001:《Java并发与高并发解决方案》学习笔记; • 002:《深入JVM内核——原理、诊断与优化》学习笔记; • 003:《Java面试宝典》 • 004:《Docker开源书》 • 005:《Kubernetes开源书》 • 006:《DDD速成(领域驱动设计速成)》 • 007: 全部 • 008: 加技术讨论群
[1]
: https://spring.io/blog/2019/07/24/simplifying-the-spring-cloud-release-train
想知道更多?长按/扫码关注我吧↓↓↓ >>>技术讨论群<<< 喜欢就点个 "在看" 呗^_^