继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

深入理解Java SPI之入门篇

深夜程猿
关注TA
已关注
手记 3
粉丝 3
获赞 2

概述

对于Java SPI会分为两篇文章来介绍,第一篇文章会简单介绍如何实现一个Java SPI Demo学习,第二篇文章会从JDK源码角度来分析Java SPI实现原理

什么是Java SPI

SPI的全称是Service Provider Interface,是JDK内置的一种服务发现机制。通过SPI我们可以动态加载我们定义的服务实现类。

Demo展示

定义一个接口
package com.spi;

public interface ISpi {
    void say();
}

编写两个实现类
package com.spi;

public class FirstSpiImpl implements ISpi {

    @Override
    public void say() {
        System.out.println("我是第一个SPI实现类");
    }
}

package com.spi;

public class SecondSpiImpl implements ISpi {

    @Override
    public void say() {
        System.out.println("我是第二个SPI实现类");
    }
}

编写配置文件

在src根目录创建文件夹META-INF/services,在创建的文件夹下面创建一个文件,命名为SPI接口的全路径名,并写上需要动态加载的实现类的全路径名:

com.spi.FirstSpiImpl
com.spi.SecondSpiImpl

编写运行程序

package com.spi;

import java.util.ServiceLoader;

/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) {

        ServiceLoader<ISpi> serviceLoader = ServiceLoader.load(ISpi.class);

        for (ISpi service : serviceLoader) {
            service.say();
        }
    }
}

输出内容为

我是第一个SPI实现类
我是第二个SPI实现类

读者可以随意增删配置内容,查看具体输出。

文件结构图

图片描述

关于SPI入门学习只需要看到这就可以来,下一篇文章会从JDK源码角度来详细分析SPI原理,敬请关注~~

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP