springboot源碼分析——SPI擴展機制


 

  springboot最重要的特性就是自動配置,許多功能不需要手動開啟,會自動幫助程序員開啟,如果想擴展某些

第三方組件的功能,例如mybatis,只需要配置依賴,就可以了,這其中都是需要SPI支持實現的,下面我們從源碼

層面看看springboot如何通過spi機制實現自動配置的。

一:加載所有工程中META-INF/spring.factories文件中的配置

 創建SpringApplication對象:

 

 

 

 

 

 

 

 

 

 

 

 

我們隨便看一個工程的目錄:spring-boot-autoconfigure 工程下META-INF 目錄下的spring.factories文件的內容, 配置類似map  ,key為某一項,value為實現集合

 

 

這就是Spi的加載機制,可以通過配置的方式實現和業務代碼的解耦,需要增加時直接配置到文件內。

這一步是在容器啟動的時候,加載所有的factoryname的值到緩存,包括自動配置的。

 

二:看一下自動配置是如何尋找並注冊的

看一下這個注解@SpringBootApplication

 

 

 

 

 

 

看一下這個類的內容:類里面有獲取自動配置的方法getAutoConfigrationEntry

 

 

 

 

 

 就是從上一步緩存result中查詢所有的EnableAutoConfiguration的value集合,

這一節主要分析spi機制加載spring.factories的配置項,下一節我們來分析自動配置的加載流程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM