zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Spring Boot 2.x迎来最后一个大版本,这意味着什么?

SpringBoot 什么 一个 版本 最后 迎来 意味着
2023-06-13 09:13:08 时间

2022年6月初,Spring Boot发布了2.7版本,这个版本是Spring Boot 2.x的最后一个主要版本。

再下一个版本,将会是颠覆性的Spring Boot 3.0

考虑到Spring Boot使用非常广,如果你仍然在使用Spring Boot,有一些事情可能是你需要去关注与及时做出处理的。

一)

很多团队都在使用Spring Boot,但可能对Spring Boot的各版本支持类型与时间不是非常清楚。

在安全性日益重要的今天,我们需要知道我们使用的框架究竟提供了何种支持,支持时间又是多久?

支持类型

Spring Boot提供了两种支持类型,分别是:OSS support与Commercial support

OSS support 社区免费支持,顾名思义,这个支持是免费的,由Spring社区提供的,主要包括安全性及Bug修复补丁。支持时间较短。

Commercial support 商业支持,当然是收费的,在社区免费支持时间范围内提供专业支持,而在社区免费支持结束后仍然提供安全性及BUG修复相关的补丁。当然时间会更长。

相信绝大部分团队使用的都是OSS support

支持时间

OSS support

每个Spring Boot大版本,指的是Spring Boot 1或Spring Boot 2这个级别,不少于三年;

而每个大版本下的主要版本,比如Spring Boot 2.1.x, Spring Boot 2.2.x这个级别,支持时间不少于一年

Commercial support

商业支持的时间相应延长

二)

这意味着:

  • • Spring 2.6.x以前的所有版本,已经结束了OSS support,接收不到任何安全或BUG补丁了
  • • Spring 2.6.x的OSS support将在Spring Boot 3.0发布时结束,也就是2022年11月份左右
  • • Spring 2.7.x的OSS support将在2023年底左右结束

也就是,如果你的项目仍然在使用2.6.x之前的版本,那尽快升级至2.6.x或2.7.x是当务之急。否则你将接收不到任何安全性及bug补丁。

当然,我知道,很多项目光是从2.5.x升级2.6.x这种轻量级的更新都是个不敢轻易去实施的行为。因为可能没有任何单元测试能保证,任何变更都害怕引发不可预知的问题。

这就是为什么我一直主张一定要写单元测试的原因所在。否则在这种关键时候,面临非常大的未知与风险。

三)

Spring Boot 3.0将在今年11月份左右到来,Spring Boot 3.0将是一个巨大的变更。其中最主要的两点变更是:

只支持JDK 17及以上

是的,你没看错,就是这么激进。不过我喜欢。

现阶段,在所有的JDK长期版本中,JDK 8仍然占据了相当一部分的比重,JDK 11的使用率已经开始超过JDK 8,而最新的JDK LTS 17则才出来几个月。

虽然JDK 17无论是在语法特性,性能等方面都有了长足的进步,但考虑到大量历史存在的JDK项目,JDK 17成为主流仍然需要相当漫长的时间。

而Spring Boot 3则激进的将自己最低支持版本设置为JDK 17,虽然会对大量已经存在的项目造成相当大的迁移压力。但总体来说,对普及最新的JDK将会具有相当重量级的影响。

任何使用Spring Boot的团队,都不得不考虑,一年后是使用一个已经不再有补丁的不再安全的Spring Boot 2还是迁移到Spring Boot 3. 抑或是选择购买商业支持。

迁移至Jakarta EE 9

在企业级开发中,如果使用的是Java,那Java EE的重要性不言而喻,Servelt, JPA,JMS等一大批重要级企业功能属于Java EE。

虽然Oracle在2017年的时候就将Java EE 8捐献给了Eclipse基金会,由于Oracle的限制,Eclipse基金会将产品名称更换为Jakarta EE,并使用了新的包名jakarta.*取代Java EE的javax.*

Jakarta EE 8在2019年时发布,它其实几乎没有做任何功能上的变更,主要是更换包名与品牌名称而已。而由于历史的影响,包括Spring Boot 2.x在内的主流框架,都仍然依赖的是Java EE 8,而没有迁移至Jakarta EE 8. 。所以,你在项目中,导入的依赖仍然是javax.*

不过,这一切将在Spring Boot 3之后改变,Spring Boot 3在这一点上同样做出了改变,迁移至了Jakarta EE 9.

受此影响,一大批依赖将一同被更新。这意味着从2.x升级至3,升级工作变得会相对困难很多。

四)

myddd-java是我正在维护的基于Java以及Spring Boot的领域驱动基础框架。

它将会跟随Spring Boot的更新而更新,在Spring Boot 2.7发布后,myddd-java也发布了0.3.x版本,升级到了以Spring Boot 2.7.x为基础依赖。

同时,为了跟随Spring Boot升级策略影响,从0.4.x版本开始,myddd-ava升级为支持Spring Boot 3以及JDK 17以上。这个工作预期于Spring Boot 3.0发布后很快完成。

如果想了解更多关于myddd的资讯,请访问官网 https://myddd.org 以了解更多。

各位程序员及架构师们,你们做好准备,以应对Spring Boot这一变化了吗?

是时候未雨绸缪了。

关于我

我是御剑,一个致力于追求,实践与传播编码之道的程序员。

访问微言码道(https://taoofcoding.tech)以阅读更多我写的文章;

访问myddd(https://myddd.org)以了解我在维护的全栈式领域驱动开源框架。