1. 程式人生 > 其它 >Java SPI機制

Java SPI機制

Java SPI 實際上是“基於介面的程式設計+策略模式+配置檔案”組合實現的動態載入機制,提供了通過interface尋找implement的方法。

SPI,全稱Service Provider Interfaces,服務提供介面。是Java提供的一套供第三方實現或擴充套件使用的技術體系。主要通過解耦服務具體實現以及服務使用,使得程式的可擴充套件性大大增強,甚至可插拔。

基於服務的註冊與發現機制,服務提供者向系統註冊服務,服務使用者通過查詢發現服務,可以達到服務的提供與使用的分離,甚至完成對服務的管理。

JDK中,基於SPI的思想,提供了預設具體的實現,ServiceLoader。利用JDK自帶的ServiceLoader

,可以輕鬆實現面向服務的註冊與發現,完成服務提供與使用的解耦

完成分離後的服務,使得服務提供方的修改或替換,不會給服務使用方帶來程式碼上的修改,基於面向介面的服務約定,提供方和使用方各自直接面向介面程式設計,而不用關注對方的具體實現。同時,服務使用方使用到服務時,也才會真正意義上去發現服務,以完成服務的初始化,形成了服務的動態載入

在Java或Android系統實現或專案實踐領域,也有直接基於ServiceLoader的功能實現,或基於ServiceLoader實現基礎上,對其進行的進一步擴充套件與優化使用。


作者:HappyCorn
連結:https://juejin.cn/post/6844903891746684941
來源:稀土掘金
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 ------------------越是喧囂的世界,越需要寧靜的思考------------------ 合抱之木,生於毫末;九層之臺,起於壘土;千里之行,始於足下。 積土成山,風雨興焉;積水成淵,蛟龍生焉;積善成德,而神明自得,聖心備焉。故不積跬步,無以至千里;不積小流,無以成江海。騏驥一躍,不能十步;駑馬十駕,功在不捨。鍥而舍之,朽木不折;鍥而不捨,金石可鏤。蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇鱔之穴無可寄託者,用心躁也。