博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解Java SPI之入门篇
阅读量:6348 次
发布时间:2019-06-22

本文共 1139 字,大约阅读时间需要 3 分钟。

不做知识的搬运工,坚持原创,阅读更多文章,欢迎订阅微信公众号:深夜程猿

概述

对于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.FirstSpiImplcom.spi.SecondSpiImpl复制代码

编写运行程序

package com.spi;import java.util.ServiceLoader;/** * Hello world! */public class App {    public static void main(String[] args) {        ServiceLoader
serviceLoader = ServiceLoader.load(ISpi.class); for (ISpi service : serviceLoader) { service.say(); } }}复制代码
输出内容为

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

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

文件结构图

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

转载地址:http://aqvla.baihongyu.com/

你可能感兴趣的文章
继 One Step 后,锤子科技 Big Bang 正式开源
查看>>
《淘宝店铺经营管理一册通》一一1.4 商品发布
查看>>
《数据科学:R语言实现》——2.5 使用Excel文件
查看>>
《淘宝店铺设计装修一册通》一2.5 抠图工具的简单运用
查看>>
《音乐达人秀:Adobe Audition实战200例》——实例4 收音机音乐节目转录到电脑里...
查看>>
《JavaScript应用程序设计》一一3.1 过时的类继承
查看>>
千万PV是什么意思?
查看>>
Amazon 推出 API 网关使用计划
查看>>
互联网流量超出路由器上限 或致全球断网
查看>>
《基于ArcGIS的Python编程秘笈(第2版)》——2.5 限制图层列表
查看>>
GNOME 地图 3.20 加入更多新特性 可用性得到加强
查看>>
《代码整洁之道:程序员的职业素养》导读
查看>>
《计算复杂性:现代方法》——习题
查看>>
Mozilla 释出更新修复中间人攻击漏洞
查看>>
思科表态反对网络中立
查看>>
《HTML5+CSS3网页设计入门必读》——1.5 利用多种Web浏览器执行测试
查看>>
Velocity官方指南-容器
查看>>
国家为何如此重视石墨烯?
查看>>
《Python和Pygame游戏开发指南》——1.14 配套网站上的更多信息
查看>>
Kafka+Flink 实现准实时异常检测系统
查看>>