Spring Boot教程(4) – 依賴管理

無論你熟悉不熟悉Gradle,build.gradle文件中的內容都是要去從新認識的。html

上圖是一個典型的,剛剛生成的build.gradle文件,添加了個Guava依賴。repositories{ mavenCentral() } 這段代碼表示咱們的依賴都是從中央倉庫下載的。 好比這個Guava庫,implementation後面跟上庫的座標就能夠引入 ,以前咱們說過,座標由 groupId:artifactId:version 組成。奇怪的是,上面列出的第一個依賴,卻沒有版本號。由於這個版本號是由一個插件管着的,插件叫作 io.spring.dependency-management。java

說到這兒,又要牽扯出不少東西了,容我深吸一口氣。git

什麼是Starter?

Spring Boot的特色就是簡化了依賴,一旦引入,就能夠按照默認的方式配置好。這個時候,Spring Boot引入了「Starter」的概念,一個Starter其實能夠表明一個功能,引入一個Stater,就表示引入了某個功能,實現這個功能所須要的依賴,都會被引入而且配置好。比方說圖中,咱們引入了Web Starter(Artifact ID是spring-boot-starter-web),它提供了web開發的功能,web開發功能須要不少依賴來完成,如圖:github

IntelliJ IDEA的Gradle工具欄能夠查看項目的全部依賴

能夠看出,Web Stater使用了Spring MVC來處理請求,用Jackson作JSON處理,用Tomcat做爲內置服務器,你搞Web開發確定離不開這些東西吧,Web Starter直接給你弄好了。只須要添加一行Web Starter的依賴就行。相似的Starter還有幾十個。Starter能夠是官方實現的,也能夠是開源庫本身實現的,也能夠團隊裏成員本身開發的。web

哪些依賴的版本能夠省略?

官方維護了一個列表,裏面列出了能夠省略版本號的依賴,包括官方實現的Starter和一些經常使用的第三方庫。對於每個Spring Boot版本,都有這樣一個列表。比方說你把Spring Boot的版本從2.1.4升級到2.1.5,那麼列表中的依賴會跟着變。spring

若是你對於這種自動維護的版本號,感受內心不踏實,仍是有辦法改的:服務器

對於Spring Boot 2.1.5來講,Web Starter自帶了Jackson,版本是2.9.8。若是你這時候想使用2.9.9的某個特性,經過上圖的代碼就能夠作到。app

注意,每一個Spring Boot版本,都針對其列表裏的第三方庫有過測試,改了版本號有可能不兼容。版本能夠改,使用要謹慎。maven

build.gradle用了哪些插件?

除了上面提到的 io.spring.dependency-management,build.gradle中還引入了java插件和org.springframework.boot插件,前者是用來搞純java開發的,後者是用來執行Spring Boot相關任務的,咱們熟悉的bootRun和bootJar任務都是從這個插件來的。ide

都是插件,引入的方式居然還不一樣,java和org.springframework.boot是經過 plugins{ id ...} 的形式引入的,io.spring.dependency-management倒是經過 apply plugin: ... 的方式引入。前者更新一點,後者更老更靈活一點,兩種形式的差異能夠在Gradle文檔中找到。反正我是沒搞明白爲何生成的build.gradle要這樣寫。有懂行的能夠留個言給你們解個惑。

其餘一些技巧

  • 若是你須要引入一個新的Starter或者第三方庫,建議去Spring Initializr看看上面的依賴有沒有你須要的。有的話建立一個新項目下載下來,把它的build.gradle中新增的東西拷貝進來。由於增長一個依賴不只僅是加一句 implementation '...',可能還有其餘區別。
  • 若是你真的對中央倉庫中的庫的依賴關係比較好奇,建議到mvnrepository.com/上看一看,逛一逛。


原文連接: fookwood.com/spring-boot…

相關文章
相關標籤/搜索