先行一步
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/