【Spring Cloud】spring.factories
阿新 • • 發佈:2021-07-18
SPI的全名為Service Provider Interface.大多數開發人員可能不熟悉,因為這個是針對廠商或者外掛的。在java.util.ServiceLoader的文件裡有比較詳細的介紹。
Spring Boot中的SPI機制,它在META-INF/spring.factories檔案中配置介面的實現類名稱,然後在程式中讀取這些配置檔案並例項化。這種自定義的SPI機制是Spring Boot Starter實現的基礎。
Spring Factories實現原理
spring-core包裡定義了SpringFactoriesLoader類,這個類實現了檢索META-INF/spring.factories檔案,並獲取指定介面的配置的功能。在這個類中定義了兩個對外的方法:
loadFactories 根據介面類獲取其實現類的例項,這個方法返回的是物件列表。
loadFactoryNames 根據介面獲取其介面類的名稱,這個方法返回的是類名的列表。
spring.factories的是通過Properties解析得到的,所以我們在寫檔案中的內容都是安裝下面這種方式配置的:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ruoyi.common.security.service.TokenService,\
com.ruoyi.common.security.aspect.PreAuthorizeAspect,\
com.ruoyi.common.security.handler.GlobalExceptionHandler