dubbo 中adaptive註解說明

爲什麼要設計adaptive?註解在類上和註解在方法上的區別?
adaptive設計的目的是爲了識別固定已知類和擴展未知類。
1.註解在類上:代表人工實現,實現一個裝飾類(設計模式中的裝飾模式),它主要作用於固定已知類,
  目前整個系統只有2個,AdaptiveCompiler、AdaptiveExtensionFactory。
  a.爲什麼AdaptiveCompiler這個類是固定已知的?因爲整個框架僅支持Javassist和JdkCompiler。
  b.爲什麼AdaptiveExtensionFactory這個類是固定已知的?因爲整個框架僅支持2個objFactory,一個是spi,另一個是spring
2.註解在方法上:代表自動生成和編譯一個動態的Adpative類,它主要是用於SPI,因爲spi的類是不固定、未知的擴展類,所以設計了動態$Adaptive類.
例如 Protocol的spi類有 injvm dubbo registry filter listener等等 很多擴展未知類,
它設計了Protocol$Adaptive的類,通過ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(spi類);來提取對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章