一直想着给 spring-boot-starter 框架升级,升级到哪个版本才能达到:影响最小、代码零改动呢?
打开maven仓库,查看 2.1.4.RELEASE 和 最近版 3.4.3 之间近乎200个版本的差异,一下子升级到最新版是不可能的。
一、版本对比
来到maven版本库,查看版本信息。
先看看2.1.4.RELEASE版本。
2.1.4.RELEASE版,编译依赖5个,运行依赖1个。
2.2.0.RELEASE版,编译依赖5个,运行依赖1个。
2.3.0.RELEASE版,编译依赖6个,运行依赖无,从这个版本开始,编译依赖有变化。
同时呢我还发现,2.3.12.RELEASE和2.2.13.RELEASE版本都是2021年发布的。这两个版本它们有什么区别呢?
二、Spring Boot 2.2.13.RELEASE 和2.3.12.RELEASE对比
Spring Boot 2.2.13.RELEASE和2.3.12.RELEASE都是在2021年发布的版本,但它们属于不同的Spring Boot主版本系列(分别是 2.2.x 和 2.3.x)。
虽然它们发布的时间相近,但它们之间有一些重要的差异,主要体现在功能增强、bug 修复、性能优化以及依赖项更新上。
1.主版本差异
Spring Boot 2.2.x 系列是较早的版本,基于 Spring Framework 5.x,并引入了许多新的特性以及改进。
Spring Boot 2.3.x系列是对2.2.x的延续,主要引入了更多的功能和修复,同时对依赖和配置做了一些优化,增强了与 Spring 生态系统的兼容性。
2.功能和特性
Spring Boot 2.3.x引入了一些新的特性和改进,比如:Docker 和 Kubernetes 支持增强:更好的与容器化和云环境的兼容性,增强了对容器镜像的支持。
对 Java 14/15/16 的支持:虽然 2.2.x 支持到 Java 11,但 2.3.x 提供了对更高版本的 Java 的支持,提升了对新版本 Java 特性的兼容性。
Spring AOT(Ahead-Of-Time)支持:2.3.x 引入了更多对 Ahead-Of-Time 编译的支持,尤其是为了支持新的构建工具。
自动化配置的改进:2.3.x 增强了自动配置的灵活性和可扩展性,简化了某些默认配置。
3.依赖项和版本升级
Spring Boot 2.3.x升级了一些核心依赖:
Spring Framework升级至 5.2.x(相比 2.2.x 使用的 5.1.x),带来了一些新功能和改进。
Spring Data 和 Spring Security 也有一些更新,提升了性能和安全性。
Spring Boot 2.3.x的依赖项版本相对更新,因此可能有一些不兼容的 API 或变更。
4.Bug 修复与优化:
Spring Boot 2.3.x修复了 2.2.x 中的多个已知 bug,并做了性能优化。
特别是在 2.3.12.RELEASE 版本中,针对一些 启动时间、内存占用、日志配置 等方面进行了改进,提升了系统的稳定性。
5.构建和打包改进:
Spring Boot 2.3.x 引入了更多的构建和打包工具改进,特别是在 JAR 和 WAR 打包 方面,提升了对容器部署的支持。
2.3.x 还加强了对 Spring Native 的支持,使得在构建原生镜像时的兼容性和性能得到了提升。
三、二者具体差异总结
Spring Boot 2.3.12.RELEASE:
对 Spring Boot 2.2.x 系列进行了一些功能增强、性能优化和 bug 修复。
提供对新版本 Java(Java 14/15/16)的支持。
改进了容器化、云部署的支持。
更新了部分核心依赖(如 Spring Framework、Spring Data、Spring Security 等)。
引入了对 Spring Native 的早期支持,增强了原生镜像构建的兼容性。
而Spring Boot 2.2.13.RELEASE:
属于较早的2.2.x系列版本,主要关注功能稳定性和修复。
支持 Java 8 到 Java 11 的兼容性。
引入了对Spring Framework 5.1.x的改进,带来一些新的特性和 bug 修复。
没有 2.3.x 中对新版本 Java、原生镜像等特性的改进。
四、最后总结
通过以上整理,我发现 2.3.12.RELEASE 有一些不兼容的 API 或变更(编译依赖变了),如果升级为这个版本,可能会面临较多的代码改动。
而我升级框架的目的是为了应付应用漏洞,并不需要新的功能,而在2.3.12.RELEASE版本中有太多新功能可能都是我这个旧项目不需要的,因此 2.2.13.RELEASE更符合我的需要。
说干就干,直接把 spring-boot-starter 由 2.1.4.RELEASE 更新为 2.2.13.RELEASE,然后使用maven更新项目的架包,更新后项目重启成功,没有任何代码报错,测试了几个功能都是OK的,框架升级成功。
领取专属 10元无门槛券
私享最新 技术干货