為什么要設計adaptive?注解在類上和注解在方法上的區別?
adaptive設計的目的是為了識別固定已知類和擴展未知類。
1.注解在類上:代表人工實現,實現一個裝飾類(設計模式中的裝飾模式),它主要作用於固定已知類,
目前整個系統只有2個,AdaptiveCompiler、AdaptiveExtensionFactory。
a.為什么AdaptiveCompiler這個類是固定已知的?因為整個框架僅支持Javassist和JdkCompiler。
a.為什么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類);來提取對象