Java中的SPI实践

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实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容