dubbo为什么要设计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类);来提取对象

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前面我们了解过了Java的SPI扩展机制,对于Java扩展机制的原理以及优缺点也有了大概的了解,这里继续深入一下D...
    加大装益达阅读 5,106评论 2 20
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • 我曾是朋友圈依赖重度患者。 早上睁眼第一件事,刷朋友圈;上班路上,刷朋友圈;吃饭,刷朋友圈;睡前,刷朋友圈;加了一...
    一粒番豆阅读 310评论 0 1
  • 暗恋是一封信 把青春的美好寄给苍老 暗恋是一首诗 用最朦胧而又清晰的词藻 暗恋是一个微笑 不经意的温暖了谁的嘴角 ...
    苍蓝星球阅读 495评论 4 8