SPI(Service Provider Interface)是JDK自帶的一種服務發現機制,類似於Spring的IOC思想,例如Mysql Driver等都使用了JDK的SPI。
SPI設計目標:
1、面向接口編程,各模塊間不耦合具體實現;
2、各接口實現間實現可插拔機制,不需要修改具體代碼;
3、需要服務發現機制;
SPI的約定:
1、當一個provider有多種實現時,一般在jar包的META-INF/services/目錄下創建該接口的同名文件;
2、文件內容爲該接口具體實現的名稱,名稱爲全限定包名;
3、當需要加載接口實現時jdk可以通過該文件找到對應的實現;