當前位置:編程學習大全網 - 編程軟體 - Dubbo之SPI實現原理詳解

Dubbo之SPI實現原理詳解

?SPI全稱為Service Provider Interface,是壹種服務提供機制,比如在現實中我們經常會有這種場景,就是對於壹個規範定義方而言(可以理解為壹個或多個接口),具體的服務實現方是不可知的(可以理解為對這些接口的實現類),那麽在定義這些規範的時候,就需要規範定義方能夠通過壹定的方式來獲取到這些服務提供方具體提供的是哪些服務,而SPI就是進行這種定義的。

說明:

Dubbo 的擴展點加載是基於JDK 標準的 SPI 擴展點發現機制增強而來的,Dubbo 改進了 JDK 標準的 SPI 的以下問題:

dubbo對於SPI的實現主要是在ExtensionLoader這個類中,這個類主要有三個方法:

如下是getExtension()方法的源碼:

createExtension()方法的源碼:

在createExtension()方法中,其主要做了三件事:

關於wrapper對象,這裏需要說明的是,其主要作用是為目標對象實現AOP。wrapper對象有兩個特點:

getExtensionClasses()方法的源碼

loadDirectory()方法的源碼:

loadClass()方法的源碼

loadClass()方法主要作用是對子類進行劃分,這裏主要劃分成了三部分:

總結而言,getExtension()方法主要是獲取指定名稱對應的子類。在獲取過程中,首先會從緩存中獲取是否已經加載過該子類,如果沒加載過則通過定義文件加載,並且使用獲取到的wrapper對象封裝目標對象返回。

getAdaptiveExtension()方法源碼

  • 上一篇:C語言編程getchar()的問題while((ch=getchar()) !='\n')程序輸出結果字符跳著轉換如果拆開寫ch=getchar()
  • 下一篇:達芬奇編程
  • copyright 2024編程學習大全網