SpringBoot是如何進行自動裝配的

註解裝配

我們知道,當我們在啓動Spring應用時,我們需要爲Spring提供配置信息(XML或Configuration),這個配置文件中配置了我們的各種Bean信息
在我們自己的應用中,Spring會讀取我們Resource下的xml配置文件,但是如果我們引入了別人的第三方包,Spring如何去掃描第三方包的配置文件呢?
這時候就要說到@Import註解了,它可以導入指定的配置類文件,從而實現配置文件的加載。
在這裏插入圖片描述
根據一個總註解實現第三方依賴的配置入口文件的導入,如上圖中只要在啓動類中加上@EnableScheduling即代表了引入了配置文件SchedulingConfiguration,然後一切就順理成章了。

自動裝配

在我們自己定義一個攔截器時,定義後還要將其註冊到WebMvcConfig中才能使用,那第三方包如果提供了一個攔截器,一定要在自己的代碼中進行硬編碼式的進行註冊動作嗎?太麻煩了是不是?這就引入了外部配置。
對於一些通用的接口,Spring會在特定的文件中記錄該接口的實現類,在Spring啓動時會去讀取這個文件,將對應的類進行處理。該文件就是org/springframework/boot/spring-boot/1.5.6.RELEASE/spring-boot-1.5.6.RELEASE.jar!/META-INF/spring.factories,這樣,如果要實現一些通用接口,直接將類名加在這個文件中即可,Spring會自動讀取並進行註冊。
如下圖在自己項目的resource/META-INF下注冊了一個自己實現的MyListener,其是SpringApplicationRunListener的實現
同樣該方案作爲一種解耦的通用接口的擴展實現
在這裏插入圖片描述
在這裏插入圖片描述
SpringBoot其實就是結合了註解裝配、條件裝配以及工程加載(spring.factories文件的加載類SpringFactoriesLoader)實現自動裝配的,大家按照約定將負責自動裝配的配置類寫入spring.factories,然後根據註解裝配@EnableAutoConfigutarion來進行配置文件的讀取,讀取自動裝配的配置類,從而實現自動裝配
SpringBootApplication --> EnableAutoConfigutarion --> SpringFactoriesLoader加載所有自動裝配配置類進行自動裝配
在這裏插入圖片描述

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