Springboot系列-理解spring-boot-starter-parent

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系列的文章在後面的博客中博主會不斷講解,一起學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章