iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
自我挑戰組

探索 Spring Boot Doc系列 第 3

Doc 6.1.1 Dependency Management & Doc 6.1.5 Starters

  • 分享至 

  • xImage
  •  

繼上一篇我們看過 Doc#2 Getting Help 之後,先跳到 Doc #6 Developing with Spring Boot。

Doc #6 Developing with Spring Boot

https://ithelp.ithome.com.tw/upload/images/20230918/20161770DwdNgIIFh1.png

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

Starter 展開

這一節的重點無非是這個 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 包也是一樣的。

https://ithelp.ithome.com.tw/upload/images/20230918/201617704Dq9aPtl7U.png

下方是注入 spring-boot-starter-web,其隨之注入相依的部分,同樣也會依賴於 Spring Framework 的核心模塊功能。
https://ithelp.ithome.com.tw/upload/images/20230918/20161770bdKbAcq6gx.png

簡言之,Spring Boot 並不是取代原本的 Spring Framework 框架,而是建立在其之上,簡化使用者開發。

參考資料
Spring Boot 文檔
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using


上一篇
版本週期及Getting Help
下一篇
Doc 6.3 Configuration Classes & Doc 6.3.1 Importing Additional Configuration Classes
系列文
探索 Spring Boot Doc30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言