Springboot系列-理解spring-boot-starter-parent
導語:在之前的springboot系列博客中我們講了如何創建Springboot項目,基本上是三種方式,但是創建的結果都是一樣的,創建完成之後,pom.xml座標文件中都會有如下一段代碼
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
這個父組件爲parent的這段代碼有什麼作用呢?可能我們感覺從大概面上理解就是依賴地址,依賴名還有依賴的版本號,更深的理解呢,有什麼作用呢?
基本作用
當我們創建一個Springboot項目時,可以選擇性繼承spring-boot-starter-parent,當然也可以不繼承,如果繼承的話parent的功能如下:
- 定義了Java的版本爲1.8,並且使用的是UTF-8格式編碼
- 繼承自 spring-boot-dependencies,這個裏邊定義了依賴的版本,所以我們在寫依賴時纔不需要寫版本號
- 執行項目打包操作的配置
- 自動化的資源過濾和插件配置
- 針對 application.properties 和 application.yml 兩個配置文件的資源過濾,也通過 profile 定義的不同環境的配置文件,例如 application-dev.properties 和 application-dev.yml(兩個配置文件基本差不多,yml的代碼格式爲樹狀結構,一目瞭然)
源碼分析
1.當創建完一個springboot項目後,可以在本地maven倉庫找到上面所說的parent文件,我的路徑如下:
spring-boot-starter-parent編輯打開源碼如下:
首先我們可以看到他是繼承spring-boot-dependencies這個依賴的,保存了基本的依賴信息,然後下面也可以看到他的編碼格式爲UTF-8還有JDK的版本信息以及前面說的filtering過濾信息等
2.同時我們也可以根據parent指定的路徑及…/…/spring-boot-dependencies也就是如下路徑來查看spring-boot-dependencies的定義:
spring-boot-dependencies源碼定義如下:
從上面的截圖我們看到了版本的定義以及 dependencyManagement 節點,這也就是在 Spring Boot 項目中部分依賴不需要寫版本號的原因
是否需要parent
在創建springboot項目的時候並不是一直都要用到maven庫下的parent,也可以自己去定義;比如我們自行定義 dependencyManagement 節點,然後在裏邊定義好版本號,之後在引用依賴時也就不用寫版本號了,像下面這樣:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
<dependency>
<dependencies>
<dependencyManagement>
這樣寫之後,可以輕鬆解決依賴的版本號問題,但是關於打包的插件、編譯的 JDK 版本、文件的編碼格式等都需要自己去配置,所以說如果是公司商業項目需要可以手動配置自己所需,如果是自己的練手項目,直接用maven下的parent就可以
結語:關於springboot中的理解spring-boot-starter-parent介紹就到這了,關於springboot系列的文章在後面的博客中博主會不斷講解,一起學習