领先一步
VMware 提供培训和认证,助您加速进步。
了解更多Spring Boot 2.0 是 2.x 系列的第一个发布版本,于2018年2月28日发布。我们刚刚发布了 Spring Boot 2.7,这意味着到目前为止,我们已经维护 2.x 系列超过4年了。在此期间,我们总共发布了 95 个不同的版本!
整个 Spring 团队以及许多社区贡献者,现在正在为下一代 Spring 做准备。我们计划在2022年11月发布 Spring Boot 3.0。这个下一个主要版本将基于 Spring Framework 6.0,并将需要 Java 17 或更高版本。它也将是第一个使用 Jakarta EE 9 API (jakarta.*) 而不是 EE 8 (javax.*) 的 Spring Boot 版本。
接下来的六个月是为您的项目进行此次重大版本更新的理想时机。在这篇博文中,我们将介绍一些您现在就可以做的、能够让未来的迁移尽可能轻松的事情。
Spring Boot 3.0 将需要 Java 17,但您无需等到发布才能升级到最新的 LTS Java 版本。任何近期的 Spring Boot 2.x 版本都能很好地与 Java 17 配合使用。您也可以在自己的代码库中使用 Java 17 的新特性(如 record)。
我们强烈建议您尽可能立即升级您的 JDK。
如果您目前使用的是较旧版本的 Spring Boot 2.x,我们强烈建议您升级到 Spring Boot 2.7。当 Spring Boot 3.0 发布时,我们将提供迁移指南,但该指南将假定您是从 Spring Boot 2.7 而不是更早版本迁移的。
升级说明始终包含在我们的发布说明中。例如,如果您从 Spring Boot 2.6 升级到 Spring Boot 2.7,您可以遵循此部分。
如果您从 Spring Boot 2.5 或更早版本升级,我们不建议跳过版本。通常,逐步升级(例如 2.5 → 2.6 → 2.7)比直接从 2.5 → 2.7 升级要容易。
随着 Spring Boot 的发展,我们经常会弃用方法或类并提供替代方案。我们通常会提供 12 个月 的重叠期,之后弃用的代码将被移除。您可以在我们的 wiki 上找到有关此策略的详细信息。
Spring Boot 3.0 将移除所有已弃用的代码,因此我们建议您检查现有代码是否依赖于任何已弃用的方法。可以考虑使用 -Werror Java 编译器选项,以便在报告弃用警告时使构建失败。
Spring Boot 2.4 改变了 application.properties 和 application.yaml 文件的加载方式。大多数用户没有注意到这个变化,但少数项目可能将 spring.config.use-legacy-processing 属性设置为 true 以恢复旧行为。
Spring Boot 3.0 不会保留旧版处理支持,因此您应该检查您的项目是否没有设置 spring.config.use-legacy-processing。
Spring MVC 提供两种解析模式的方式。自 Spring Boot 2.6 起,PathPatternParser 成为默认选项。
某些应用程序可能通过设置 spring.mvc.pathmatch.matching-strategy 属性手动切换回 AntPathMatcher 实现。虽然这在 Spring Boot 3.0 中仍将继续工作,但我们建议尽可能使用 PathPatternParser,因为它提供了更好的性能。
Jakarta EE 9 引入了一个新的顶层包 jakarta,取代了 EE 8 的 javax 顶层包。例如,Jakarta EE 8 中的 Servlet 规范使用 javax.servlet 包,但在 EE 9 中已更改为 jakarta.servlet。
总的来说,在同一个项目中混合使用 Java EE 和 Jakarta EE API 是不可能的。您需要确保您自己的代码以及所有第三方库都使用 jakarta.* 包导入。
好消息是,大多数维护良好的库都正在生成 Jakarta EE 9 兼容版本。例如,Hibernate、Thymeleaf、Tomcat、Jetty 和 Undertow 已经完成了这项工作。
我们建议您花一些时间检查您使用的任何与 Jakarta EE 集成的第三方库,并确认它们是否具有 EE 9 兼容版本。我们发现最常见的问题是与导入 Servlet API 的项目有关。
Spring Framework 6.0 将与上一代不兼容。如果您正在使用提供 Spring 集成的第三方 jar,您应该检查它们是否计划发布 Spring Framework 6 兼容版本。
虽然我们不建议在生产环境中使用,但您可以尝试 Spring Boot 3.0 milestones 来了解迁移您的项目有多难。在代码的一个分支上尝试 milestones 是一个很好的方式来预防潜在的问题。它们可以在 https://repo.spring.io/milestone 获取。在 https://start.spring.io 上创建一个项目并选择最新的 3.0 milestone 将会包含构建配置中必要的仓库。
如果您试图将现有的 2.7.x Spring Boot 应用程序升级到最新的 3.0.0 milestone,您可能还想看看 Spring Boot Migrator 项目。这个实验性项目旨在自动化许多迁移任务,包括升级。它使用 OpenRewrite 构建,并获得 Apache 2.0 许可。
我们一直对反馈感兴趣,并且在 GA 版本发布前发现 bug 时我们非常高兴。
您可以在 github.com/spring-projects/spring-boot/issues 提出 issue(请务必告诉我们您使用的 Spring Boot 版本)。
Spring Boot 2.7 是 2.x 系列的最后一个计划发布版本。我们将此版本的开源支持延长了 6 个月,直到 2023 年 11 月。
此外,Spring Boot 2.7 的商业支持也已延长,可用至 2025 年 2 月。
您可以在 spring.io/projects/spring-boot 找到项目支持详情。商业支持的详情可以在 tanzu.vmware.com/spring-runtime 找到。
任何由商业支持请求触发的发布都将始终作为开源发布,因此商业客户也帮助了开源社区。