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實戰 ,丁雪豐 (譯者)

發佈了32 篇原創文章 · 獲贊 9 · 訪問量 8278
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章