Dubbo核心實現之SPI簡單介紹

2021-09-09 02:39:11 字數 1475 閱讀 3164

這個部分單獨寫一頁,看起來更高大上一些。

1.概括

dubbo採用微核心+外掛程式體系,使得設計優雅,擴充套件性強。那所謂的微核心+外掛程式體系是如何實現的呢!

jdk實現spi服務查詢: serviceloader

2.定義示例介面

serviceloader會遍歷所有jar查詢meta-inf/services/com.example.spi檔案

1

package

com.example;23

public

inte***ce

spi

3.a實現

1

package

com.a.example;23

public

class spiaimpl implements

spi 89

10public

string syahello()

1314 }

4.b實現

1

package

com.b.example;23

public

class spibimpl implements

spi 89

public

string syahello()

1213 }

5.實現

serviceloader.load(spi.class)讀取廠商a、b提供jar包中的檔案,serviceloader實現了iterable介面可通過while for迴圈語句遍歷出所有實現。

乙個介面多種實現,就如策略模式一樣提供了策略的實現,但是沒有提供策略的選擇, 使用方可以根據issupport方法根據業務傳入廠商名來選擇具體的廠商。

1

public

class

spifactory 12}

13returnnull;14}

15 }

6.spi介面定義

定義了@spi註解

public @inte***ce spi  

只有在介面打了@spi註解的介面類才會去查詢擴充套件點實現,會依次從這幾個檔案中讀取擴充套件點

meta-inf/dubbo/internal/      //dubbo內部實現的各種擴充套件都放在了這個目錄了

meta-inf/dubbo/ meta-inf/services/

我們以protocol介面為例, 介面上打上spi註解,預設擴充套件點名字為dubbo

@spi("dubbo")

public inte***ce protocol

具體的實現:

Dubbo核心實現之SPI簡單

dubbo採用 jdk實現spi服務查詢 serviceloader 首先定義下示例介面 package com.example public inte ce spi booleanissupport string name string sayhello serviceloader會遍歷所有jar...

Dubbo核心解析 SPi(二)

spring的aop理解 spring的aop增強方式一共有5種,分別為 增強型別 應用場景 前置增強 許可權控制 記錄呼叫日誌 後置增強 統計分析結果資料 異常增強 通過日誌記錄方法異常資訊 最終增強 釋放資源 環繞增強 快取 效能 許可權 事務管理 通過以下方式理解記憶 try catch fi...

1 Dubbo實現SPI之 JDK介紹

jdk通過serviceloader類實現spi機制的服務查詢功能。我們來看下jdk是如何實現 jdk實現spi服務查詢 serviceloader。package com.test public inte ce spi string sayhello serviceloader會遍歷所有jar查詢...