dubbo 扩展点里自动包装

Posted l2c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo 扩展点里自动包装相关的知识,希望对你有一定的参考价值。

在看protrocol扩展点时,发现很费解的一点:当前invoker的url是register协议,在export的时候都会从qos->lister->filer这3个包装类开始,看了一下getExtension()的过程,createExtension()里有这样一些代码:
// 装饰器类,用来增加扩展实现。
Set<Class<?>> wrapperClasses = cachedWrapperClasses;
if (wrapperClasses != null && !wrapperClasses.isEmpty()) {
for (Class<?> wrapperClass : wrapperClasses) {
instance = injectExtension((T) wrapperClass.getConstructor(type).newInstance(instance));
}
}
可以看到当前扩展点的包装类会被缓存起来并且RegisterProtocol会在自动最里面被包三层,之后实例才返回,所以这个扩展点在getExtension()都会被包三层

以上是关于dubbo 扩展点里自动包装的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo之SPI源码分析

【Dubbo】Adaptive

Dubbo底层源码分析之SPI扩展点

Dubbo源码分析系列---扩展点加载

02.dubbo源码解析之Dubbo扩展点加载

dubbo的扩展点重构