美文网首页
Java的SPI

Java的SPI

作者: Haalo | 来源:发表于2020-02-05 16:28 被阅读0次

介绍

SPI:service provider interface
Java SPI 是 JDK 内置的一种服务提供发现机制。它是Java中一种动态替换发现的机制。比如说JDBC,我们在连接数据库的时候需要用到java.sql.Driver 这个接口,但是Driver并没有实现,而是提供了一套标准的 api 接口。而是在mysql包中的com.mysql.cj.jdbc.Driver实现了Driver。
别人定义的接口我去实现。

SPI

如何实现SPI

  1. 需要在 classpath 下创建一个目录,该目录命名必须是:META-INF/services。
  2. 在该目录下创建一个 properties 文件,该文件需要满足以下几个条件:
    • 文件名必须是扩展的接口的全路径名称
    • 文件内部描述的是该扩展接口的所有实现类
    • 文件的编码格式是 UTF-8
    • 通过 java.util.ServiceLoader 的加载机制来发现

SPI 的实际应用

以JDBC为例:
META-INF/service路径下的文件里面写的就是 mysql 的驱动实现。

mysql结构
文件中的内容
Driver文件.png
跳转后发现是对java.sql.Driver中实现
mysql中对Driver的实现
通过 SPI 机制把 java.sql.Driver 和 mysql 的驱动做了集成。这样 就达到了各个数据库厂商自己去实现数据库连接,jdk 本身不关心你怎么实现。

相关文章

  • Java - SPI机制

    Java - SPI机制 SPI是什么 SPI全称Service Provider Interface,是Java...

  • dubbo 源码分析 -SPI

    dubbo 中大量使用SPI,在看源码之前必须先了解dubbo的SPI 1、Java原生spi java原生spi...

  • spi

    java中有一些包结尾为spi,如java.nio.channels.spi spi - service prov...

  • Dubbo SPI的认识

    Dubbo是基于Java原生SPI机制思想的一个改进. 关于JAVA 的SPI机制 SPI全称(service p...

  • Dubbo SPI 的使用方法(一)- 扩展点自动包装

    开篇 前面有说到 Java SPI 的介绍与使用方法, 而本篇要说的 Dubbo SPI 是基于 Java SPI...

  • dubbo的spi机制

    dubbo的spi机制 dubbo的扩展点加载机制源自于java的spi扩展机制。那么,何为java的spi扩展机...

  • dubbo spi机制源码阅读

    dubbo的扩展能力很强大。他是通过扩展Java的spi机制得到的。 Java Spi机制介绍 SPI是Servi...

  • 4.Dubbo的SPI扩展点加载机制

    4.1 加载机制概述 4.1.1 Java SPI 在讲Dubbo SPI之前,先来了解一下Java SPI,SP...

  • SPI实现接口多实现路由

    SPI简介 SPI是Service Provider Interfaces的简称。根据Java的SPI规范,我们可...

  • dubbo的内核剖析

    SPI机制 Java SPI SPI(service provider interface),在运行时,动态加载接...

网友评论

      本文标题:Java的SPI

      本文链接:https://www.haomeiwen.com/subject/dlhrxhtx.html