天天看點

Spring Boot(三):Spring Boot自動加載源碼解析

版本:Spring Boot:已經吃了很多關于版本的虧!看之前先看版本資訊。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
           

SpringBoot在進行SpringApplication對象執行個體化時會加載META-INF/spring.factories檔案,将該配置檔案中的配置載入到Spring容器。該檔案的位置如圖:

Spring Boot(三):Spring Boot自動加載源碼解析

源碼分析:

一、從入口開始跟進

Spring Boot(三):Spring Boot自動加載源碼解析

二、跟進run()方法

Spring Boot(三):Spring Boot自動加載源碼解析

三、隻執行了一個run()方法,繼續跟進

Spring Boot(三):Spring Boot自動加載源碼解析

四、可以看到隻建立了一個對象,我們跟進構造函數

Spring Boot(三):Spring Boot自動加載源碼解析

五、看到他調用的是this方法,其實就是下邊的構造方法2

六、在構造中有一個方法三

Spring Boot(三):Spring Boot自動加載源碼解析

七、跟進getSpringFactoriesInstances()

Spring Boot(三):Spring Boot自動加載源碼解析

八、歡呼雀躍吧,loadFactoryNames()就是加載檔案的方法

loadFactoryNames方法的作用是把/spring.factories檔案中的配置類轉化為對象,我們可以看到SpringApplication對象執行個體化時就是在這裡加載META-INF/spring.factories檔案

九、如果我們想排除一個自動引入的jar可以

Spring Boot(三):Spring Boot自動加載源碼解析

十、檢視Spring Boot自帶的自動配置的包: spring-boot-autoconfigure-1.5.6.RELEASE.jar,打開其中的META-INF/spring.factories檔案會找到自動配置的映射。

Spring Boot(三):Spring Boot自動加載源碼解析

再來看看資料源自動配置的實作注解

怎麼找到源碼檔案?按着command+單擊username或password,進去九一切了然

Spring Boot(三):Spring Boot自動加載源碼解析
Spring Boot(三):Spring Boot自動加載源碼解析

繼續閱讀