SPI 簡介
SPI 全稱為 (Service Provider Interface) ,是JDK內置的一種服務提供發現機制。 目前有不少框架用它來做服務的擴展發現, 簡單來說,它就是一種動態替換發現的機制, 舉個例子來說, 有個接口,想運行時動態的給它添加實現,你只需要添加一個實現,
而后,把新加的實現,描述給JDK知道就行啦(通過改一個文本文件即可) 公司內部,目前Dubbo框架就基於SPI機制提供擴展功能。
簡單示例
通過一個簡單例子來說明SPI是如何使用的。 首先通過一張圖來看看,用SPI需要遵循哪些規范,因為spi畢竟是JDK的一種標准。
我們首先需要一個目錄,META-INF\services 如下,最終的目錄路徑就像這樣:
1
2 3 4 5 6 7 8 9 10 11 12 |
|
文件名字為 接口/抽象類: 全名 文件內容: 接口/抽象類 實現類
就像這樣: com.ivanzhang.spi.impl.TextHello com.ivanzhang.spi.impl.ImageHello
接下來, 我們需要定義接口和實現類:
1
2 3 |
|
實現類:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
最后,來看看,如果使用SPI機制,客戶端代碼:
1
2 3 4 5 6 7 8 9 10 11 |
|
最后的輸出: Text Hello.Image Hello
