Dubbo SPI

如果读者没有了解过SPI,建议先看一下java spi
https://www.jianshu.com/p/7c2f50561546

什么是Dubbo的SPI

SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。Dubbo通过SPI来加载所有的组件。但是Dubbo没有用原生的java spi而是增强了spi的功能。

Java SPI 与 Dubbo SPI的区别

Java SPI的约定:

  • 在META-INF/services/目录中创建以接口全限定名命名的文件该文件内容为Api具体实现类的全限定名
  • 使用ServiceLoader类动态加载META-INF中的实现类
  • 如SPI的实现类为Jar则需要放在主程序classPath中
  • Api具体实现类必须有一个不带参数的构造方法

Dubbo SPI的约定:
区别一: Java SPI 必须在META-INF/services下创建接口命令的全类名文件。而Dubbo SPI则可以在META-INF/dubbo、META-INF/dubbo/internal、META-INF/services 文件下都可以创建以接口全类名命名的文件
区别二:文件中的内容 java spi 中的内容就是实现类的全类名的路径,而dubbo spi则是以 key-value的形式进行存储,key表示一个名字 value表示实现类的全路径。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.jdk SPI介绍 SPI 全称为 Service Provider Interface,是一种服务发现机制。...
    ElevenKing阅读 5,918评论 0 7
  • SPI 机制是实现可扩展性的一种方式。上一篇介绍了 JDK SPI 的使用姿势和基本原理,本节来分析 Dubbo ...
    原水寒阅读 6,125评论 3 9
  • 从上一篇 Java SPI 机制解析 可以知道 Java SPI 的一些劣势。Dubbo 的扩展点加载从 Java...
    匠丶阅读 9,644评论 0 7
  • SPI简介 站在一个框架作者的角度来说,定义一个接口,自己默认给出几个接口的实现类,同时 允许框架的使用者也能够自...
    fffhJk阅读 3,405评论 0 1
  • 目录:关于 Java SPI实现 Java SPI 需要遵循的标准Java SPI 的实际应用Java SPI 的...
    Carol_6a27阅读 3,142评论 0 0