1. 程式人生 > >Spring Boot入門(三)起步依賴

Spring Boot入門(三)起步依賴

Spring Boot起步依賴的功能:開發者只需指定功能,構建過程自動分析使用者需求,引入相關依賴

起步依賴本質上是一個Maven專案物件模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,通過依賴疊加,實現功能支援,因此很多依賴的命令都暗示了他們所提供的特定功能。 例如,你打算做一個web應用,有兩種選擇:一種是傳統的向專案構建檔案裡新增一堆單獨的庫依賴;另一種,則是宣告這個一個web應用程式,只需新增web起步依賴即可。 若想使用Thymeleaf為Web檢視,用JPA來實現資料持久化,對應用程式進行測試,也可匯入Thymeleaf、Spring Data JPA和Spring Boot的test的起步依賴。 在這裡插入圖片描述

上述依賴,加一起一共才五個依賴,卻等價於一堆獨立依賴庫。 另外,起步依賴會自動決定他們引入的傳遞依賴的版本,使用者不用擔心依賴衝突的問題。 當然,若使用者若想知道自動都使用了哪些庫,在構建工具中也能找到相關的答案。在Gradle裡,dependencies任務會顯示一個依賴樹,其中包含了專案所用的每個庫以及它們的版本。在Maven裡使用denpendency外掛的tree目標也能獲得相似的依賴樹。

自定義依賴如何覆蓋起步依賴

以Spring Boot的web起步依賴為例,它傳遞了Jackson JSON庫,若你不想使用Jackson想將其從依賴中移除該怎麼做呢? 若使用Gradle,可以通過exclude group進行依賴移除: 在這裡插入圖片描述

在Maven中,則可以使用元素來排除傳遞依賴。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<exclusion>
			<groupId>com.fasterxml.jackson.core</groupId>
		</exclusion>
	</exclusions>
</dependency>

另外,若專案需要使用另一個版本的Jackson(非Spring Boot依賴傳遞所提供的)來進行構建,在Maven中,可直接在pom.xml中表達:

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</atrifactId>
	<version>2.4.3</version>
</dependency>

Maven會使用最近的依賴,也就是說,你在專案構建說明檔案裡增加的這個依賴,會覆蓋傳遞依賴引入的另一個依賴。 若使用Gradle,可以在build.gradle檔案裡指明你要的Jackson版本:

compile("com.fasterxml.jackson.core:jackson-databind:2.4.3")

注意:Gradle傾向使用庫的最新版本,就是說若你使用的jackson版本要老於Spring Boot提供的版本,則不得不把web起步依賴中Spring Boot提供的版本剔除掉:

compile("org.springframework.boot:spring-boot-starter-web") {
exclude group: 'com.fasterxml.jackson.core'
}
compile("com.fasterxml.jackson.core:jackson-databind:2.3.1")

參考文獻:Spring Boot實戰 ,丁雪豐 (譯者)