Dubbo-动态编译

doctorvian 2020-04-24

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

Dubbo-动态编译

3. 初始化JavassistCompiler辅助使用对字节码文件的操纵Dubbo-动态编译

AdaptiveCompiler.compile(code,classLoader)

Dubbo-动态编译

 

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

Dubbo-动态编译

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

Dubbo-动态编译

 

相关推荐