繼上一篇我們看過 Doc#2 Getting Help 之後,先跳到 Doc #6 Developing with Spring Boot。
Doc #6 Developing with Spring Boot
Doc #6.1 Build Systems Overview
官方建議專案建置工具挑選有支援 dependency management,如 Gradle or Maven ,
有另一個工具選擇 Ant,但其支援性就沒有前面兩款來得好。
若選擇 Maven 就挑選 Doc#6.1.2(參考文件有108頁)、 Gradle 就請挑選 Doc #6.1.3(參考文件有45頁),筆者在工作上兩個建置工具都會接觸,若從兩者挑選其一,會選擇 Gradle ,因其 建制腳本 build.gradle 遠本 pom.xml 看起來沒那麽厚。
Doc #6.1 還剩下兩個小節尚未提到 Doc #6.1.1 Dependency Management、Doc #6.1.5 Starters.
Doc#6.1.1 Dependency Management
在使用Spring Boot 的時候,會注入相關的依賴,譬如說作為一個 Spring Boot 開發的 Web,常會看到以下的依賴 (其包含版本號 3.1.3)
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
implementation 'org.springframework.boot:spring-boot-starter-web:3.1.1'
官方這裡提到只需要載入以下 Gradle plugin
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.1'
}
apply plugin: 'io.spring.dependency-management'
再注入上方的 spring-boot-starter-web 就不需要寫上版本號了,因為 io.spring.dependency-management 會去透過使用者使用的Spring Boot 版本去載入相對應的版本號,以上方為例,
可以看到 'org.springframework.boot' 的 Gradle Plugin 採用的版本為 3.1.1,則 dependency-management 就會找 Spring Boot 3.1.1 對應的依賴。
在更簡單來說,加了上方的 plugin 之後,你在注入名為 org.springframework.boot: 為開頭的依賴,不需要管版本號,統一透過 Spring Boot 的版本去管理。
Maven 的用戶也不用擔心,官方也同樣有推一個 Maven Plugin 。
Doc#6.1.5 Starters
這一節的重點無非是這個 Table 1. Spring Boot application starters,Spring Boot 提供ㄧ系列的啟動包。而這些啟動包,有其命名規則 spring-boot-starter-* , * 就是代表應用名稱,其設計目的就是為了方便使用者的查找。
在這一小節之中有明示說 What is in a name 之中,使用者也可以自定義自己啟動包,命名規則為
thirdparty-spring-boot-starter 其中 third party 乃由使用者自行決定 (Doc#7.10.5 Creating Your Own Starter 有詳細介紹) 。
操作環節
下方 dependencies 片段擷取自 Gradle 建置 Spring 專案的 build.gradle 之中的 dependencies 區塊,我想透過下方注入去看,假設我今天只注入一個 spring-boot-starter-data-jpa 的話,他會出現多少 springframework 的 依賴包 。
下方是點開專案的 External Libraries 所見的 spring-boot-starter-data-jpa 注入的所有 Jar 包。
由可以看到 spring-boot-starter-data-jpa,就會一次注入很多相依,上方spring-boot-start-XXX 以及 springframework:spring-XXX 。
由此可知starter-data-jpa,是依賴於原本的 Spring Framework ,並非取代之,這點對於其他 starter 包也是一樣的。
下方是注入 spring-boot-starter-web,其隨之注入相依的部分,同樣也會依賴於 Spring Framework 的核心模塊功能。
簡言之,Spring Boot 並不是取代原本的 Spring Framework 框架,而是建立在其之上,簡化使用者開發。
參考資料
Spring Boot 文檔
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using