一、前言
前面dubbo整體架構(gòu)分析里面我們講解了服務(wù)消費者消費一個服務(wù)的詳細過程是,首先 調(diào)用 Protocol 的 refer 方法生成 Invoker 實例,接下來把Invoker 轉(zhuǎn)換為客戶端需要的接口(如:UserServiceBo),本文來講解第二個環(huán)節(jié)的實現(xiàn)

image.png
二、Invoker到客戶端接口的轉(zhuǎn)換
Invoker到客戶端接口的轉(zhuǎn)換是下面代碼完成的:

image.png
其中proxyFactory是代理類的擴展接口,默認情況下這里調(diào)用getProxy返回的spi擴展實現(xiàn)類是JavassistProxyFactory,也就是這里是調(diào)用了JavassistProxyFactory的getProxy方法,getProxy代碼如下:

image.png
該代碼的作用是對接口interfaces進行代理,并使用InvokerInvocationHandler對具體調(diào)用進行攔截。InvokerInvocationHandler中的invoker就是服務(wù)消費方遠程服務(wù)到Invoker轉(zhuǎn)換的invoker。
三、總結(jié)
服務(wù)消費方遠程服務(wù)到Invoker的轉(zhuǎn)換,是通過 ReferenceConfig 類的 init 方法調(diào)用 Protocol 的 refer 方法生成 Invoker 實例,這是服務(wù)消費的關(guān)鍵。
歡迎大家加入微信掃碼進入知識星球進行深入探討

121、.png