2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1。

备注:Spring Boot版本号通常有四种形式,SNAPSHOT:快照版,表示开发版本,随时可能修改;M1(Mn):M是milestone的缩写,也就是里程碑版本;RC1(RCn):RC是release candidates的缩写,也就是发布预览版;Release:正式版。

Spring Boot 3.0.0 M1版本都有哪些重大变化?请看下文的介绍。

(1)Java基线从Java 8提升到了Java 17。

Java 17发布于2021年9月发布,虽然JDK 更新的频率很快,但开发者的习惯仍然停留在 JDK 8 层面。尤其是 Oracle 搞出商业收费后,大家升级JDK的意愿就更淡了。如今Oracle修改了商业策略,宣布JDK 17 宣布可以免费商用了,并且最多可以支持到2029年9月份,长达8年,符合广大开源社区的需求。

(2)从Java EE APIs 到 Jakarta EE APIs。

Spring Boot 3开始,所有的Java EE APIs都需要迁移到Jakarta EE上来。大部分用户需要修改import相关API的时候,要用jakarta替换javax。比如:原来引入javax.servlet.Filter的地方,需要替换为jakarta.servlet.Filter。但还有一些依赖Java EE API的第三方库,目前还没有得到很好的支持,所以在Spring Boot 3中暂时会先移除这类组件的支持(比如:EhCache 3、Infinispan、Jolokia、Pooled JMS等)。所以,目前的M1版本相较2.x版本来说,会有一些特性的缺失。当然大多数应该还只是暂时的,Spring Boot官方会等这些第三方库发布Jakarta兼容库之后再重新引入。