原因
為什么要使用,因為在程序開發中,可能包名不一樣,pom依賴的很多的jar 他們是如何把這些類進行注入到spring容器中的呢。
所以springboot就提出了spring.factories
使用
一、第一種
新建一個Test類
package com.test; public class Test { public Test() { System.out.println("Test加載"); } }
1.如果我們要把Test這個類注入到IOC中,原來的方式只能寫到啟動類的包下面,或者在啟動類中加@ComponentScan,里面是包名。
2.,使用spring.factories 可以解決這個問題,在resources下面創建文件夾META-INF 在創建一個文件spring.factories。
3.編輯 spring.factories 文件,寫入
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.test.Test
4.啟動,在控制台我們可以看到,說明這個類以及注入到spring中。
原理
SpringFactoriesLoader載荷從和實例化給定類型的工廠“META-INF / spring.factories”文件,其可存在於在類路徑多個JAR文件。 該spring.factories文件必須為Properties格式,其中的關鍵是接口或抽象類的完全合格的名稱和值是一個逗號分隔的實現類名的列表。 例如:
example.MyService=example.MyServiceImpl1,example.MyServiceImpl2
其中example.MyService是接口的名稱,和MyServiceImpl1和MyServiceImpl2兩種實現。
二、第二種
在@SpringBootApplication啟動類加上@Import(需要注入的類)