Java SPI 服務機制

SPI:Service Provider Interface,目的是提供接口,讓第三方(服務廠商或擴展框架開發者)提供自定義實現的服務功能。例如,JDBC驅動,可以加載MySQL、Oracle、或者SQL Server等。

SPI約定:

1、在工程的META-INF/services/目錄下,以接口的全限定名作為文件名,文件內容為實現接口的服務類;

2、使用ServiceLoader動態加載META-INF/services下的實現類;

3、接口的實現類需含無參構造函數;

SPI 問題考慮

1、如果在META-INF/services下有接口實現類,存在多個(例如jar包下面也有相應),系統如何處理?

答:會全部加載,ServiceLoader在加載資源文件時,已經考慮了這個問題。

2、SPI,和Dubbo等相比,區別在哪里?

答:SPI的目的是提供給各種不同服務相同的訪問接口。而Dubbo等微服務是將服務拆分形成功能相對獨立的、維護性強的服務。兩者出發點并不一致。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容