第三章 dubbo核心之ioc原始碼解析

2021-09-07 15:04:57 字數 1747 閱讀 1667

dubbo的ioc具體實現在:t injectextension(t instance)方法中。該方法只在三個地方被使用:

1

createadaptiveextension()

2 --injectextension((t) getadaptiveextensionclass().newinstance()) //

為建立好的adaptiveextensionclass例項進行屬性注入34

createextension(string name)

5 --injectextension(instance) //

為建立好的extension例項進行屬性注入

來看一下原始碼:

1

/**2

* dubbo-ioc的核心3*/

4private

t injectextension(t instance)

19 } catch

(exception e) 24}

25}26}

27 } catch

(exception e)

30return

instance;

31 }

整個方法的作用就是通過instance物件例項的setter方法為instance的屬性賦值,完成setter注入,即ioc的最經典的注入方式。

詳細步驟:

其中,比較重要的就是:object object = objectfactory.getextension(pt, property);這個方法。其中的objectfactory=adaptiveextensionfactory例項,其屬性factories = [springextensionfactory例項, spiextensionfactory例項]。

看一下原始碼:

1

private

final listfactories;23

public

t getextension(classtype, string name) 13}

14return

null

;15 }

看一下spiextensionfactory的原始碼:

1

public

class spiextensionfactory implements

extensionfactory 8}

9return

null;10

}11 }

從這裡我們可以看出dubbo-spi的另外乙個好處:可以為spi實現類注入spi的裝飾類或動態**類。

看一下springextensionfactory的原始碼:

1

public

class springextensionfactory implements

extensionfactory 78

public

static

void

9contexts.remove(context);10}

1112 @suppresswarnings("unchecked")

13public

t getextension(classtype, string name) 20}

21}22return

null;23

}24 }

第三章 核心物件

一 核心物件 1 每個核心物件都是一片兒記憶體 資料結構 由系統核心分配與訪問。2 令牌物件,事件物件,程序物件,訊號量物件,執行緒物件等都是核心物件。3 核心物件有安全限制,在建立之初就需要傳入乙個結構security attributes的安全描述符 4 類似的還有使用者物件和gdi物件等等,它...

第三章 核心結構

2016 07 05 lt os cfg.h中的核心功能函式 os enter critical os exit critical osinit osstart osintenter osintexit osschedlock os sched lock en osschedunlock os sc...

Python核心程式設計第三章筆記

井號 表示之後的字元為python注釋 反斜線 繼續上一行 分號 將兩個語句連線在一行中 冒號 將 塊的頭和體分開 c語言賦值語句,被當成乙個表示式 可以返回值 python 的賦值語句不會返回值。x 1 y x x 1 assignments not expressions file line 1...