領先一步
VMware 提供培訓和認證,以加速您的進展。
了解更多Spring Boot 的新版本發布頻率相當高,將您的專案更新到較新的 Spring Boot 版本是全球許多團隊和組織每天工作的一部分。
有時這些升級很簡單且容易,例如針對主要包含修正錯誤和處理 CVE 的新修補程式版本。 相反,升級到新的次要版本甚至主要版本需要更多工作,包括程式碼變更以適應新的或變更的 API、更新組態以不再使用已棄用的金鑰等等。
因此,每個新的次要或主要 Spring 版本都會附帶關於這些變更的綜合指南和文件,您可以閱讀並按照這些指南和文件來升級您的專案。 這方面的一個很好的例子是將您的專案升級到 Spring Boot 3 的新遷移指南。
最新版本的 Spring Tools 4.17.1(以及對應的 VSCode 版 Spring Boot Tools 1.43.0 版)包含許多實驗性功能,可協助您掌握最新的 Spring Boot 版本,無論是最新的修補程式版本還是最新最好的 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/