美文网首页
Java中的SPI实践

Java中的SPI实践

作者: 不将就51y | 来源:发表于2018-02-13 09:24 被阅读0次

SPI 简介

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现,
而后,把新加的实现,描述给JDK知道就行啦(通过改一个文本文件即可) 公司内部,目前Dubbo框架就基于SPI机制提供扩展功能。

SPI实例

1、定义一个接口

public interface HelloInterface {
    void sayHello();
}

2、实现接口

public class TextHello implements HelloInterface {
    @Override
    public void sayHello() {
        System.out.println("Text hello");
    }
}
public class ImageHello implements HelloInterface {
    @Override
    public void sayHello() {
        System.out.println("Image hello");
    }
}

3、在classpath下增加配置文件,目录如下


image.png

文件中为实现类

com.justin.practice.spi.ImageHello
com.justin.practice.spi.TextHello

4、测试类

public static void main(String[] args) {
        ServiceLoader<HelloInterface> loaders = ServiceLoader.load(HelloInterface.class);
        for (HelloInterface loader : loaders) {
            loader.sayHello();
        }
    }

输出

Image hello
Text hello

JDBC中的SPI实现

DriverManger加载时候会调用如下方法java.sql.DriverManager#loadInitialDrivers



Java SPI机制简介
JDBC中的SPI实现

相关文章

  • Java中的SPI实践

    SPI 简介 SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提...

  • SPI原理解析一

    SPI(service provider Interfaces),对于Java中的实现SPI类ServiceLoa...

  • dubbo的spi机制

    SPI SPI是一种扩展机制,在java中SPI机制被广泛应用,比如Spring中的SpringServletCo...

  • Java中的SPI机制及接口多实现调用

    Java中的SPI机制及接口多实现调用 0x00 SPI机制 SPI 全称为 (Service Provider ...

  • 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扩展机...

网友评论

      本文标题:Java中的SPI实践

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