springboot starter原理總結

1. 關鍵特性

  • 引入依賴
  • 自動配置

2. 引入依賴

將常用依賴進行組合分類,打包提供給具有相應特性的工程;

"它使用了maven和gradle的依賴傳遞方案,starter在自己的pom.xml文件中聲明瞭多個依賴。……一個starter可能會傳遞性地引入幾十個依賴。"

starter之間引用依賴傳遞關係如圖:

3. 自動配置

如果“自動配置類 “探測” 到類路徑下存在對應的依賴,就會“配置” 使用這些依賴的工具bean

①. 在<spring-boot-autoconfigure>依賴中,依賴有自己對應的自動配置類:xxxAutoConfiguration。例如:<spring-boot-starter-data-mongodb>對應給它的自動配置類名稱:MongoAutoConfiguration;

②. “利用Spring對條件化配置的支持”(即@Condition註解,springboot在此基礎上提供了@ConditionalOnClass、@ConditionalOnMissingBean等條件化配置註解),當依賴的“特徵”類存在在類路徑下,才實例化對應的實現了該依賴必要配置的自動配置類;

還是以MongoAutoConfiguration類爲例,它的源碼如下:

package org.springframework.boot.autoconfigure.mongo;

import ...

@Configuration
@ConditionalOnClass({MongoClient.class})
@EnableConfigurationProperties({MongoProperties.class})
@ConditionalOnMissingBean(
    type = {"org.springframework.data.mongodb.MongoDbFactory"}
)
public class MongoAutoConfiguration {
    ...
}

③. 所謂依賴即一些列jar包,jar包裏存在實現功能相關的class文件;

④. 所謂配置即實例化bean的對象在容器中;(Spring原理)

⑤. 以SpringMVC爲例,工具類包括:視圖解析器、資源處理器以及消息轉換器等;

 

參考:《Spring實戰(第4版)》

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