Dubbo-动态编译

Posted gaohuan30

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo-动态编译相关的知识,希望对你有一定的参考价值。

1.触发创建动态代理类

private Class<?> createAdaptiveExtensionClass() {
        String code = createAdaptiveExtensionClassCode();
        ClassLoader classLoader = findClassLoader();
        com.alibaba.dubbo.common.compiler.Compiler compiler = ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.common.compiler.Compiler.class).getAdaptiveExtension();
        return compiler.compile(code, classLoader);
    }

2. 生成Compiler工具loader

3. 初始化JavassistCompiler辅助使用对字节码文件的操纵

AdaptiveCompiler.compile(code,classLoader)

 

 执行doCompile方法-使用javassist方法创建对应的class文件

4. 外层实例化对象并放入缓存汇总

 

以上是关于Dubbo-动态编译的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo-动态编译

Dubbo#编译动态扩展类

dubbo spi扩展实现机制javasist

Dubbo剖析-SPI机制

动态 Rstudio 代码片段

dubbo 2.5.4-SNAPSHOT 源码编译