领先一步
VMware 提供培训和认证,助您快速提升技能。
了解更多Spring Boot 的新版本发布频率相当高,将项目更新到 Spring Boot 的较新版本是全球许多团队和组织日常工作的一部分。
有时这些升级很简单,例如针对主要包含错误修复和 CVE 修复更改的新补丁版本。相比之下,升级到新的次要版本甚至新的主要版本需要更多工作,包括更改代码以适应新的或已更改的 API,更新配置以不再使用已弃用的密钥等等。
因此,每个新的 Spring 次要版本或主要版本都附带一份关于这些更改的全面指南和文档,您可以阅读并遵循这些指南来升级您的项目。一个很好的例子是将项目升级到 Spring Boot 3 的新迁移指南。
Spring Tools 4.17.1 的最新版本(以及相应的 VSCode 版本 1.43.0 的 Spring Boot Tools)包含许多实验性功能,可以帮助您随时了解最新的 Spring Boot 版本,无论是最新的补丁版本还是最新的和最好的 Spring Boot 次要版本和主要版本。
这里第一个值得注意的新实验性功能是能够自动验证您在工作区项目中使用的 Spring Boot 版本。一旦有更新的补丁、次要或主要版本可用(与您在项目中使用的 Spring Boot 版本相比),新的版本验证功能就会标记您的构建文件。这些标记会在新的版本在 Maven Central 上可用后立即显示在您的编码环境中的问题视图中。
版本验证将分别处理新的补丁、次要和主要版本,您可以控制每个验证的严重性。如果您想暂时忽略新的主要版本,只需将新主要版本的首选项设置为忽略。如果您想将新的补丁版本标记为警告甚至错误,请相应地设置首选项。这样,如果您不需要版本验证标记,就不会被它们淹没,并且可以看到您感兴趣的标记以及您选择的严重级别。
验证您在项目中使用的版本只是第一步。下一步,您可能希望实际将项目升级到这些较新版本。这就是新的实验性升级支持发挥作用的地方。
您的编码环境中的快速修复将显示在这些版本验证标记上,允许您直接升级到这些较新版本——无论这是较新的补丁、次要还是主要版本。
对于较新的补丁版本,这些快速修复将只更新构建文件中的 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/