Java开发周更

Dubbo扩展机制

2019-09-29  本文已影响0人  昙花未现

@SPI注解定义默认实现类,比如@SPI(“dubbo”)默认调用的是DubboProtocol类。

@Adaptive注解定义在方法上,代表自动生成和编译一个动态的Adpative类,它主要用于SPI,因为SPI的类是不固定的、未知的扩展类,所以设计了动态$Adaptive类。例如,Protocol的SPI类有injvm、dubbo、registry、filter和listener等很多扩展未知类,它设计了Protocol$Adaptive的类,通过ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(SPI类)来提取对象。

@Adaptive注解定义在类上,表示是一个装饰模式的类,于是整个过程是:AdaptiveCompiler→JavassistCompiler。AdaptiveCompiler起装饰作用,在里面获取当前激活的JavassistCompiler类,然后执行compile方法产生默认的自适应扩展类。

上一篇下一篇

猜你喜欢

热点阅读