Spring Boot 基本配置之依賴管理starter pom

池塘里洗澡的鸭子發表於2024-03-30

  在SpringBoot快速搭建中搭建了一個沒有任何功能的專案,檢視其pom.xml檔案:

                

  專案pom.xml檔案有兩個核心依賴,分別是spring-boot-starter-parent和spring-boot-starter。仔細觀察可知spring-boot-starter-parent中有版本號,而spring-boot-starter中午版本號。實際在後續開發中都不用在依賴中新增版本號了,為什麼呢?

  使用“Ctrl+滑鼠左鍵”進入並檢視spring-boot-starter-parent底層原始檔,先看spring-boot-starter-parent做了哪些事。

                

  spring-boot-starter-parent 定義了: 1. 工程的Java版本為 17 ;

                  2. 工程程式碼的編譯原始檔編碼格式為 UTF-8 ;

                  3. 工程編譯後的檔案編碼格式為 UTF-8;

                   4. Maven打包編譯的版本。

  繼續研究build節點部分,也定義了相關內容版本(不另外上圖了)。  

  再繼續看spring-boot-starter-parent的父依賴 spring-boot-dependencies,方式同進入spring-boot-starter-parent一樣:

                

  如上圖所示這個才是SpringBoot專案的真正管理依賴的專案,裡面定義了SpringBoot相關的版本。

                

  如上圖示:dependencies定義了SpringBoot版本的依賴的元件以及相應版本。

  spring-boot-starter-parent 透過繼承 spring-boot-dependencies 從而實現了SpringBoot的版本依賴管理,所以自定義的SpringBoot工程繼承spring-boot-starter-parent後已經具備版本鎖定等配置了,這也就是在 Spring Boot 專案中部分依賴不需要寫版本號的原因啦。

  那專案執行依賴的JAR包是從何而來的?以SpringBoot快速搭建中使用的spring-boot-starter-web為例分析——在本地倉庫中檢視其依賴檔案,找到其依賴程式碼如下圖:

                

  可知spring-boot-starter-web依賴啟動器的主要作用是打包了Web開發場景所需的底層所有依賴(基於依賴傳遞,當前專案也存在對應的依賴jar包)。

  當然官方提供了更多的starter pom,同時除了官方提供的,第三方也可以提供。區別二者可以透過約定的規則:命名starter在前為官方提供,starter在最後為第三方提供。

    

    

相關文章