Dubbo-SPI
前言 Dubbo 支持多种传输协议,可以有多种注册中心等等高扩展的功能,其原因就是 Dubbo SPI 提供的良好的扩展性,可以给开发者自己实现多样丰富的功能。Dubbo SPI在Java SPI的基础上发展而来,和Java SPI 一样,都是典型的 策略模式 实现,本文就主要介绍 Dubbo SPI 的使用方式和源码分析。 结合代码能够更深了解本文的内容,代码github地址:https://github.com/mikasaco/dubbo-study.git Dubbo SPI 和 Java SPI 的比较 Java SPI 的使用方式可以 参考博客 Dubbo SPI 相比于 Java SPI 有以下 3 个 优势: Java SPI 每次都会把所有实现类都加载并实例化(是在迭代器迭代的时候创建实例),而 Dubbo SPI 是分两段创建实例,先进行类加载,然后在使用到具体实现的时候才实例化,并且 Dubbo SPI 大量使用缓存,会把 Class 对象和实例对象都缓存起来,性能更好; Java SPI 在类加载失败的时候难以定位异常; Dubbo SPI 还支持 IOC 和 AOP 。 补充一下JVM的类加载机制 类加载大的上来分有 加载、连接、初始化 3 个步骤。经常会误把加载等同于类加载,把加载包含初始化。 加载是把 class 文件读到方法区,并创建一个 Class