一、SpringFactoriesLoader 介紹
1.1 SpringFactoriesLoader 簡介
SpringFactoriesLoader 工廠加載機制是 Spring 內(nèi)部提供的一個約定俗成的加載方式,與 java spi 類似,只需要在模塊的 META-INF/spring.factories 文件中,以 Properties 類型(即 key-value 形式)配置,就可以將相應(yīng)的實現(xiàn)類注入 Spirng 容器中。
Properties 類型格式:
key:是全限定名(抽象類|接口)
value:是實現(xiàn),多個實現(xiàn)通過 **逗號** 進(jìn)行分隔
1.2 SpringFactoriesLoader 常用方法
loadFactoryNames
讀取 classpath上 所有的 jar 包中的所有 META-INF/spring.factories屬 性文件,找出其中定義的匹配類型 factoryClass 的工廠類,然后并返回這些工廠類的名字列表,注意是包含包名的全限定名。
loadFactories
讀取 classpath 上所有的jar包中的所有 META-INF/spring.factories 屬性文件,找出其中定義的匹配類型 factoryClass 的工廠類,然后創(chuàng)建每個工廠類的對象/實例,并返回這些工廠類對象/實例的列表。
1.3 loadFactories 流程圖
二、SpringFactoriesLoader 源碼解析
2.1 loadFactoryNames 解析
public static ListloadFactoryNames(Class<?> factoryType, @Nullable ClassLoader classLoader) { // 獲取包含包名的工廠類名稱 String factoryTypeName = factoryType.getName(); // 獲取所有配置在 META-INF/spring.factories 文件的值 // 然后獲取指定類的實現(xiàn)類名列表 return loadSpringFactories(classLoader).getOrDefault(factoryTypeName, Collections.emptyList()); }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。