先行一步
VMware 提供培训和认证,助您加速进步。
了解更多新的 Spring Boot 版本发布得相当频繁,在全球范围内,许多团队和组织将项目升级到更新的 Spring Boot 版本作为日常工作的一部分。
有时,这些升级很简单容易,例如针对主要包含错误修复和 CVE 问题的补丁版本更新。与此相反,升级到新的小版本甚至新的主版本需要更多工作,包括修改代码以适应新的或更改的 API,更新配置以不再使用已弃用的键,等等。
因此,每个新的小版本或主版本的 Spring 都随附一份关于这些更改的全面指南和文档,您可以阅读并遵循以升级您的项目。一个很好的例子是将项目升级到 Spring Boot 3 的新迁移指南。
最新发布的 Spring Tools 4.17.1(以及对应的 Spring Boot Tools for VSCode 版本 1.43.0)包含许多实验性功能,可帮助您及时更新到最新的 Spring Boot 版本,无论是最新的补丁版本还是最新的主要/次要版本。
这里第一个值得注意的新实验性功能是自动验证您在工作区项目中所使用 Spring Boot 版本的能力。与您项目中使用 Spring Boot 版本相比,只要有新的补丁、次要或主要版本可用,新的版本验证功能就会标记您的构建文件。一旦 Maven Central 发布新版本,这些标记会立即出现在您的编码环境中的问题视图中。
版本验证将独立处理新的补丁、次要和主要版本,并且您可以控制每个验证的严重程度。如果您暂时想忽略新的主要版本,只需将新主要版本的偏好设置设为 IGNORE。如果您想将新的补丁版本标记为警告甚至错误,请相应地设置偏好。这样,如果您不需要版本验证标记,就不会被它们淹没,并且可以按照您选择的严重级别看到您感兴趣的标记。
验证项目中所使用的版本只是第一步。下一步,您可能希望实际将项目升级到这些更新的版本。这时新的实验性升级支持就派上用场了。
您的编码环境中的快速修复会出现在这些版本验证标记上,允许您直接升级到这些更新的版本——无论这是新的补丁、次要还是主要版本。
对于新的补丁版本,这些快速修复只会更新构建文件中的 Spring Boot 父级版本——仅此而已。
对于新的次要或主要版本,工具不仅会更新 Spring Boot 父级的版本。快速修复将执行一个完整的升级方案,自动为您完成许多必要的更改——例如,包括代码更改、更新新的属性键、将所有内容转移到新的 jakarta 包等等。
这并不能保证完全完成升级项目所需的一切。但它可以处理许多必要的更改并自动为您完成,这样您就不必自己手动操作。所以它的目的是帮助您升级项目,而不是保证它能完成所有事情。
快速修复操作一旦被调用,将在后台运行并将所有必要的更改直接应用于项目文件。目前还没有一个对话框弹出,询问是否真的要将这些更改应用于项目。因此,我们建议您在本地 git 仓库中保留项目的版本,并在快速修复操作完成后,使用各种 git 工具检查所做的更改,然后再提交。
除了版本验证的快速修复之外,工具还提供了通过菜单或命令面板项直接执行这些升级的选项。这种按需执行升级方案的方式的好处在于,它以一种友好的方式提供并解释了将执行的所有详细步骤和更改。它甚至允许您特别包含或排除某些步骤——如果您不想让工具自动升级某些部分的话。
在为项目应用升级方案时,尚不支持 Gradle 构建文件。虽然版本验证适用于基于 Gradle 的项目以及自动化升级方案的许多部分,但修改 `build.gradle` 文件本身尚未得到支持,但这已在未来版本的路线图上。
有时,您可能不想在编码环境内运行所有这些项目升级,您可能有很多项目需要连续升级,或者您希望通过更详细的文档和解释以分步方式引导完成升级过程。这时,实验性的Spring Boot Migrator 项目就派上用场了。
与在编码环境中直接将方案作为重构执行以自动完成版本升级的繁琐任务不同,Spring Boot Migrator 通过创建详细的 HTML 报告,提供了一种更全面的项目升级方法。此报告包含并描述了将项目从 Spring Boot 2.7 升级到 Spring Boot 3.0 所需遵循的所有步骤——无论这些步骤是否可以自动化。对于可以自动化的步骤,报告允许用户直接执行相应的方案以自动应用更改。对于无法自动化的步骤,报告会向用户提供如何补救所需更改的指导。
这使开发人员无需查找和阅读可能适用于其自己的应用程序的不同 Spring 和 Spring Boot 项目的所有发布说明。
除此之外,Spring Boot Migrator 项目还提供了一系列附加功能(如用于扫描项目的 shell 应用程序、支持将 JEE 应用程序转换为 Spring Boot、将 Mule 定义转换为 Spring Integration 等)。
在 Spring Boot 升级的幕后,工具使用 OpenRewrite 项目作为基础,特别是包含所有自动化源代码更改实现的 `rewrite-spring` 模块,这些升级方案就是执行这些更改。因此,如果您想了解幕后细节,请随意查看。
升级方案远未做到尽善尽美,我们将在未来的版本中增强它们。如果您有任何建议、反馈或增强请求,请通过以下方式联系我们并分享:https://github.com/spring-projects/sts4/issues/