专栏首页高级开发进阶【JavaP6大纲】Dubbo篇:Dubbo SPI 和 Java SPI 区别?

【JavaP6大纲】Dubbo篇:Dubbo SPI 和 Java SPI 区别?

Dubbo SPI 和 Java SPI 区别?

spi 是啥?spi,简单来说,就是 service provider interface ,说白了是什么意思呢,比如你有个接口,现在这个接口有 3 个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要 spi 了,需要根据指定的配置或者是默认的配置,去找到对应的实现类加载进来,然后用这个实现类的实例对象。

举个栗子。你有一个接口 A。A1/A2/A3 分别是接口 A 的不同实现。你通过配置 接口 A = 实现 A2 ,那么在系统实际运行的时候,会加载你的配置,用实现 A2 实例化一个对象来提供服务。

spi 机制一般用在哪儿?插件扩展的场景,比如说你开发了一个给别人使用的开源框架,如果你想让别人自己写个插件,插到你的开源框架里面,从而扩展某个功能,这个时候 spi 思想就用上了。 Java spi 思想的体现

spi 经典的思想体现,大家平时都在用,比如说 jdbc。

Java 定义了一套 jdbc 的接口,但是 Java 并没有提供 jdbc 的实现类。

但是实际上项目跑的时候,要使用 jdbc 接口的哪些实现类呢?一般来说,我们要根据自己使用的数据库,比如 mysql,你就将 mysql-jdbc-connector.jar 引入进来;oracle,你就将 oracle-jdbc-connector.jar 引入进来。

在系统跑的时候,碰到你使用 jdbc 的接口,他会在底层使用你引入的那个 jar 中提供的实现类。 d

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Dubbo 源码分析 - SPI 机制

    SPI 全称为 Service Provider Interface,是 Java 提供的一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,...

    田小波
  • JDK/Dubbo/Spring 三种 SPI 机制,谁更好?

    举个栗子,现在我们设计了一款全新的日志框架:super-logger 。默认以XML文件作为我们这款日志的配置文件,并设计了一个配置文件解析的接口:

    芋道源码
  • JDK、Dubbo、Spring 三种 SPI 机制,谁更好?

    公众号运营至今,离不开小伙伴们的支持。为了给小伙伴们提供一个互相交流的平台,特地开通了官方交流群。关注公众号「Java后端技术全栈」回复「进群」即可。

    田维常
  • Dubbo SPI 实现原理

    Dubbo 并未使用 Java SPI ,而是重新设计了一套增强版的 SPI 。Dubbo SPI 的相关逻辑封装在了 ExtensionLoader 类中...

    王小明_HIT
  • 深入理解Dubbo源码(二),分析Java SPI与Dubbo SPI的实现源码

    我在上一篇说了句:为什么我能短短几个晚上的时间就能看懂。dubbo不是这么容易完全看懂的,实际上我从国庆之前就开始一点点去了解dubbo,当前我所说的看懂,也只...

    Java艺术
  • 三歪问我Dubbo的SPI机制是啥?

    上一篇 Dubbo 文章敖丙已经带了大家过了一遍整体的架构,也提到了 Dubbo 的成功离不开它采用微内核设计+SPI扩展,使得有特殊需求的接入方可以自定义扩展...

    敖丙
  • dubbo天天用,你不会连SPI都不知道吧?

    继续深入问呗,前面一些基础性的东西问完了,确定你应该都 ok,了解 dubbo 的一些基本东西,那么问个稍微难一点点的问题,就是 spi,先问问你 spi 是啥...

    良月柒
  • dubbo天天用,你不会连SPI都不知道吧?

    继续深入问呗,前面一些基础性的东西问完了,确定你应该都 ok,了解 dubbo 的一些基本东西,那么问个稍微难一点点的问题,就是 spi,先问问你 spi 是啥...

    Bug开发工程师
  • Dubbo 是如何实现 SPI 机制?

    SPI 全称是 Service Provider Interface,是一种服务发现机制。

    FoamValue

扫码关注云+社区

领取腾讯云代金券