springboot學習

ZyyIsPig發表於2020-12-05

starter原理

starters是依賴關係的整理和封裝

  • 將所有可能遇到的配置資訊提前配置好,寫在自動配置的jar包中。每個Starter基本都會有對應的自動配置。
  • 是一套依賴座標的整合,可以讓匯入應用開發的依賴座標更方便,利用依賴傳遞的特性,把依賴打包了

無需配置(自動配置)、無需複製貼上依賴座標,一個座標即可完成所有入門級別操作。舉例:Web開發,只需要匯入spring-boot-starter-web。
在這裡插入圖片描述
常用的starter
在這裡插入圖片描述

依賴管理的原理

BOM(Bill of Materials)依賴清單,是由Maven提供的功能,就是dependencyMangament
BOM內定義成套相互相容的jar包版本集合
使用時依賴時,只需依賴該BOM檔案,即可放心的使用清單內的依賴jar包,且無需版本號。
BOM設計初衷:方便維護專案依賴版本升級。

1.繼承了spring-boot-starter-parent的好處和特點

  • 預設編譯Java 1.8
  • 通過spring-boot-denpendencies的pom管理所有公共Starter依賴的版本
  • spring-boot-denpendencies通過Maven的一個特性來實現版本管理
  • 隨用隨取,不用繼承父類所有的starter依賴。

2.pom檔案中的maven外掛

<!-- 作用:將一個SpringBoot的工程打包成為可執行的jar包 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

自動配置(AutoConfiguration)原理

  • 要配置的專案Pivotal團隊的開發人員都寫好了,主要是通過@Configuration實現

  • SpringBoot採用約定大於配置設計思想,將所有可能遇到的配置資訊提前配置好,寫在自動配置的jar包中。每個Starter基本都會有對應的自動配置。

  • SpringBoot幫我們將配置資訊寫好,存放在一個jar包中:spring-boot-autoconfigure-2.1.11.RELEASE.jar

  • jar包裡,存放的都是配置類,讓配置類生效的"規則類"

那麼自動配置的值在哪裡?
在這裡插入圖片描述
自動配置的值怎麼才能生效?
檢視啟動類註解@SpringBootApplication

追蹤步驟:

  • @EnableAutoConfiguration
  • @Import({AutoConfigurationImportSelector.class})
  • spring.factories
  • org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration
  • @EnableConfigurationProperties({ServerProperties.class})
  • private final ServerProperties.Tomcat tomcat = new ServerProperties.Tomcat();

有了自動配置,那麼基本全部採用預設配置。當然也可以更改預設配置,怎麼改?

官網的自動配置的地址

相關文章