为了账号安全,请及时绑定邮箱和手机立即绑定

深入理解Java SPI之入门篇

标签:
Java

概述

对于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原理,敬请关注~~

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
3
获赞与收藏
2

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消