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)以了解我在维护的全栈式领域驱动开源框架。