Spring Boot Starter自動裝配原理

先看看SpringBoot自動裝配的原理,看了源碼原理後就明白爲什麼可以自定義Starter了

@SpringBootApplication是必須的,在Application啓動類上的一個註解,大家都知道,就從@SpringBootApplication入手,點擊進去是很多註解的組合,每個註解就不多做解釋了
重點看@EnableAutoConfiguration,它是自動裝配的整個邏輯,再點擊去,關鍵信息@Import(AutoConfigurationImportSelector.class)

 

這裏也分版本,有些版本是EnableAutoConfigurationImportSelector,1.4.3版本就是(如下圖),不過邏輯實現都差不多

我目前版本是2.2.7,是AutoConfigurationImportSelector

着重介紹下@Import註解,@Import註解的參數可以是靜態類(用作直接導入)也可以是實現了ImportSelector接口的類,當是實現了ImportSelector會根據實現的selectImports方法來對類進行導入。

AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader)方法是加載項目的基本配置數據getAutoConfigurationEntry(autoConfigurationMetadata,annotationMetadata)方法則是自動裝配的邏輯

關鍵方法:getCandidateConfigurations(annotationMetadata, attributes); 繼續跟下去

最後在這裏加載的配置文件spring.factories,在META-INF目錄下

看下依賴包下,確實是有此文件的

 

打開一探究竟

好傢伙,一大片各種配置類,啥redis/mongo/elasticsearch/jpa等等通通在裏面

就拿org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration來說,這個是redis的

還有很多其他配置信息,就不一一截圖了

 

application.yml

直接就配置上了,這也就是爲什麼只要配置相關信息,我們就可以用,SpringBoot自動裝配的原理

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