為什么要在resources下面的META-INF中配置spring.factories


因為如果是公共的模塊(base-common)里面的一些配置,比如對數據源的配置,雖然別的服務模塊依賴公共模塊,但是在別的服務啟動的時候並不會掃描到base-common下的組件。

案例:

//新建一個Test類
public class Test {
    
    public Test() {
        System.out.println("Test加載");
    }
}

如果我們要想將這個Test類注入到IOC中,以前的方式只能寫到啟動類的包下面,或者在啟動類中加上@ComponentScan(包名)

現在我們可以使用spring.factories來解決這個問題,在resources下面創建文件夾META-INF,再創建一個文件spring.factories

編輯spring.factories文件並寫入配置

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
 com.test.Test

配置原理

SpringFactoriesLoader載荷從和實例化給定類型的工廠“META-INF / spring.factories”文件,其可存在於在類路徑多個JAR文件。
該spring.factories文件必須為Properties格式,其中的關鍵是接口或抽象類的完全合格的名稱和值是一個逗號分隔的實現類名的列表。
如:example.MyService=example.MyServiceImpl1,example.MyServiceImpl2。其中example.MyService是接口的名稱,和MyServiceImpl1和MyServiceImpl2兩種實現。


免責聲明!

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



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