搶先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多產生 Spring Boot 專案最快的方式是透過 start.spring.io。該網站提供一個精選的相依性清單,您可以根據選定的 Spring Boot 版本將其添加到您的應用程式。您還可以為專案選擇語言、建置系統和 JVM 版本。多年來,start.spring.io 作為產生 Spring 專案工具的普及率呈指數級增長,每年透過該網站產生數百萬個專案。
在過去的幾個月裡,我們一直在努力徹底修改專案產生 API。為了更好地理解其背後的動機,請看下面的專案結構:
initializr-generator
是包含專案產生 API 核心的函式庫。initializr-web
包含 REST 端點以及與 Web UI 相關的所有內容。initializr-site
包含 start.spring.io 上可用的所有自訂項目。現有 API 的問題在於,對於任何想要自訂專案產生的人來說,唯一合理的方式是 fork 該函式庫並擴展或修改 ProjectGenerator
類別。這造成了相當笨拙的開發者體驗。
新 API 的主要目標是在不 fork 函式庫的情況下,允許自訂產生的專案。為了允許對專案的各個方面進行貢獻,每個方面都有一個抽象概念。這些包括
.gitignore
和基本設定檔案的更高階模型這些抽象透過幾個掛鉤點提供,您可以使用它們來自訂專案資產
BuildCustomizer
用於新增相依性、外掛程式或其他設定項目ProjectContributor
,一個高階掛鉤點,用於將資產新增到目錄結構該函式庫提供了幾個條件,以便可以根據請求的專案套用自訂器。以下範例說明了如何調整 Gradle 建置,以便在請求 war
打包時套用 war
外掛程式
@Bean
@ConditionalOnPackaging(WarPackaging.ID)
public BuildCustomizer<GradleBuild> warPluginContributor() {
return (build) -> build.addPlugin("war");
}
這個想法是,自訂器可以在外部模組中定義(有點類似於 Spring Boot 中的自動設定),而無需對函式庫進行任何變更。
作為重構的一部分,我們也改進了專案結構。
頂層概念(例如 ProjectContributor
、BuildCustomizer
)位於 initializr-generator
中。此模組還包含實際產生專案所需的最小基礎結構。initializr-generator-spring
為我們希望為 Spring 專案產生的專案結構提供貢獻者。此外,程式碼現在被分成 GitHub 上的兩個儲存庫,一個用於 函式庫,另一個用於 start-site
,它代表我們在 start.spring.io 上的生產實例。
新的專案產生 API 使我們能夠輕鬆地向 start.spring.io 添加許多功能。我們今天合併了它們,因此您可以立即使用這些功能。
產生的專案現在在專案的根目錄中包含一個 HELP.md
檔案。該檔案是根據應用程式中存在的相依性量身定制的。目前,它包含指向與所選相依性相關的指南和參考文件的連結。未來,我們計劃進一步自訂 HELP.md 檔案,以提供下一步,幫助您發展應用程式。
如果使用 restdocs
相依性產生專案,則建置會使用 BuildCustomizer
配置 Asciidoctor 外掛程式。
對於使用 Flyway
產生的專案,現在會自動建立 src/main/resources/db/migration
。為了說明使用 API 完成此操作有多麼容易,以下是該功能的貢獻者
@Bean
@ConditionalOnRequestedDependency("flyway")
public ProjectContributor flywayProjectContributor() {
return (directory) -> {
Path migrationDirectory = directory
.resolve("src/main/resources/db/migration");
Files.createDirectories(migrationDirectory);
};
}
我們幾乎沒有觸及新 API 的可能性,我們希望在帶來新功能的同時,保持改進的開發者體驗和非侵入性變更之間的平衡。
通常,我們希望將更多內容帶到 HELP.md,其中可以根據所選相依性提供專用提示,更重要的是,您可以選擇哪些相依性來提醒您可能還不知道的內容。
我們還在為 start.spring.io 開發新的 Web UI,並尋找幫助您擴展應用程式的方法,敬請期待!