HttpInvokerServiceExporter和HttpInvokerProxyFactoryBean的實現

    注:SpringFramework版本是3.2.8spring

1.HttpInvokerServiceExporter

時序圖(描述的是serviceInterface爲interface類型時的狀況,注意下面的圖中步驟四、9中爲了方便閱讀,加了返回值,嚴格來講這是不合理,這麼畫的目的是爲了方便閱讀)spa

  • HttpInvokerServiceExporter中有個倆個屬性很重要,即service和serviceInterface,它的配置能夠參考官方文檔
  • service是實際的服務類實例,是spring的bean;serviceInterface若是是interface接口類則生成動態代理(若是不是interface類型,則生成Cglib代理),表示服務類提供哪些服務——這個接口用於動態代理。
  • HttpInvokerServiceExporter經過InitialzeBean來初始化必要的操做,這個操做在Spring中第一次對HttpInvokerServiceExporter進行getBean時進行。 

2.HttpInvokerProxyFactoryBean

時序圖(下圖中步驟三、1三、14中有返回值,這麼畫的目的是便於閱讀;步驟四、16中方法上有參數,這麼畫嚴格來講不對的,這麼畫的目的僅是爲了便於閱讀):代理

  • 由源代碼可知,HttpInvokerProxyFactoryBean發送到HttpInvokerServiceExporter的是一個RemoteInvocation(以下圖1所示)實例——包含methodName方法名、parameterTypes參數類型、實參。
  • HttpInvokerServiceExporter返回給HttpInvokerProxyFactoryBean的是一個RemoteInvocationResult(以下圖2所示)——包含一個execption屬性(不爲null則表示服務端處理髮生異常)和一個Object類型的value屬性(服務端業務上的處理結果)

 

                                 

圖1 RemoteInvocation的屬性接口

                                       

圖2 RemoteInvocationResult的屬性文檔

 

      注: 上述的描述跳過了不少步驟,這部分相對簡單,建議本身去看源碼。get

相關文章
相關標籤/搜索