前言
在微服务开发中,Spring Boot、Spring Cloud 和 Spring Cloud Alibaba 是三个非常重要的框架和技术栈。然而,许多开发者在使用这些框架时,经常会遇到版本兼容性的问题。本文将详细解释这三者的版本选择和对应关系,将这三者整合初始化新建一个maven聚合工程,帮助开发者更好地理解和使用这些框架。
概述
- Spring Boot:是一个快速开发微服务的框架,它简化了基于 Spring 的应用开发,提供了许多自动配置的功能。
- Spring Cloud:是基于 Spring Boot 实现的一套微服务解决方案,包括服务注册与发现、配置管理、断路器、智能路由、微代理、控制总线等。
- Spring Cloud Alibaba:是 Spring Cloud 的一个扩展,集成了阿里巴巴的多个开源组件,如 Nacos、Sentinel、RocketMQ 等,提供了更加丰富的微服务解决方案。
1 准备工作
在开始创建聚合工程之前,确保你已经安装和拥有了下列环境
环境说明:windows11、idea2023.3.8,maven3.6.3、openjdk8
- idea2023.3.8官网地址:idea官网下载
- maven3.6:windwos安装多版本Maven(图文详细版)
- openjdk8:OracleJDK与OpenJDK的区别(附带win11下多版本jdk安装)
注意:示例工程只展示基础常用的模块,可以根据项目自行需要添加对应模块,理解思路和过程就行。
jialiangkj-pet-common: 通用模块,项目中常用的一些工具类和公共类等。
jialiangkj-pet-pojo: 实体类模块,存放实体类对象,例如: BO、VO等对象。
jialiangkj-pet-api: web接口的公用依赖
jialiangkj-pet-gateway: 微服务网关
jialiangkj-pet-auth-service: 鉴权中心
jialiangkj-pet-file-service: 文件资源服务
本文将按照以下环境进行创建工程
- SpringBoot2.7.18
- SpringCloud2021.0.9
- SpringCloud Alibaba2021.0.6.1
如果想了解单体架构如何创建项目工程的请查看:Springboot创建Mave聚合工程(可灵活创建任意版本)
2 关于版本问题
正确的版本选择对于项目的稳定性和性能至关重要。不合适的版本组合可能会导致各种问题,如依赖冲突、功能缺失等。因此,了解各版本之间的对应关系是非常必要的。
Spring Boot、Spring Cloud 和 Spring Cloud Alibaba 版本对应关系
大多数开发者都是直接按照网上的步骤和教程使用版本,但很多人并不清楚这三个版本的对应关系,接下来将从官网入手查看版本对应关系。
浏览器打开springboot官网:https://spring.io/projects/spring-boot#learn,查看可选择的GA版本
由于SpringBoot3
以上系列,最低需要jdk17
以上进行支持,但是目前企业里大多数项目还是使用jdk8
(成熟稳定运行多年)且生态支持繁荣,所以我们本次示例使用SpringBoot2.X
系列最后一个版本2.7.18
进行示范。
确定好使用springboot2.7.18版本之后,那么我们查看SpringCloud对应的应该使用哪个版本进行匹配。
点击后滚轮鼠标下滑
我们可以看到SpringBoot2.6.x、2.7.x对应的Cloud版本为2021.0.x
这里我们在点击SpringCloud Alibaba,发现Spring官网并没有跟新版本号,我们需要去Alibaba的github官网查看最新版本号
SpringCloud Alibaba的github官方地址:https://github.com/alibaba/spring-cloud-alibaba
可以知道SpringBoot2.7.x版本对应的 SpringCloud Alibaba版本为2021.x版本
具体版本号和依赖获取
最终具体版本确定可以查看maven官方仓库确认,maven仓库官方地址:https://mvnrepository.com/
1.SpringBoot版本依赖坐标获取
进入maven仓库后搜索:spring boot starter parent
进入后下滑找到2.7.18版本
点击进入后可以获取pom文件依赖坐标
最终SpringBoot2.7.18 对应版本依赖坐标如下
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
<type>pom</type>
</dependency>
2.SpringBoot版本依赖坐标获取
进入maven仓库后搜索:spring-cloud-dependencies
找到2021.0.x最后更新的小版本
点击进入后可以获取pom文件依赖坐标
最终SpringCloud2021.0.9 对应版本依赖坐标如下
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
3.SpringBoot版本依赖坐标获取
进入maven仓库后搜索:spring-cloud-alibaba-dependencies
进入后找到2021.0.x最后更新版本的日期小版本进行选择
点击进入后可以获取pom文件依赖坐标
最终SpringCloud Alibaba 对应版本依赖坐标如下
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.6.1</version>
<type>pom</type>
</dependency>
至此我们需要的三个SpringBoot2.7.18、SpringCloud2021.0.9 和 SpringCloud Alibaba2021.0.6.1的版本对应关系和相关安装依赖已经完成。
3 Idea新建Maven工程
spring官方模版新建时无法选择旧版本创建
因为我们要创建springboot2.7.18版本,所以不选择上述创建方式,思路是先创建maven聚合工程,然后再引入springboot低版本的依赖
打开idea新建工程

根据自己需要填写项目名称,保存路径等

选择已有的jdk,此处选择spring官方推荐使用BellSoft Liberica JDK

点击创建后选择this windows当前窗口打开项目工程
配置本地maven库

根目录模块下鼠标右键添加api模块

创建模块api模块

添加common通用模块

添加gateway模块

添加pojo模块

添加模块完成后点击项目根目录模块的pom文件可以看到如下