SPI 简介
SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现,
通过一个简单例子来说明SPI是如何使用的。 首先通过一张图来看看,用SPI需要遵循哪些规范,因为spi毕竟是JDK的一种标准,目前Dubbo框架就基于SPI机制提供扩展功能。
SPI 实现
1、首先,创建spi接口类
我们首先创建spi接口类,如创建HelloInterface样例接口
package org.bird.spi; /** * @description java spi(Service Provider Interface)样例 * @author liangjf * */ public interface HelloInterface { /** * */ public void sayHello(); }
2、其次,创建spi实现类
我们分别创建spi接口的ImageHello跟TextHello两个不同实现类
package org.bird.spi.impl; import org.bird.spi.HelloInterface; public class ImageHello implements HelloInterface { public void sayHello() { System.out.println("Image Hello."); } }
package org.bird.spi.impl; import org.bird.spi.HelloInterface; public class TextHello implements HelloInterface { public void sayHello() { System.out.println("Text Hello."); } }
3、再次,创建meta目录
我们创建META-INFO/services目录,并创建配置文件,文件名字为 接口/抽象类: 全名 文件内容: 接口/抽象类 实现类就像这样:org.bird.spi.HelloInterface
4、最后,创建测试程序
我们最后创建一个spi的测试程序,查看一下是否符合我们的预期结果。
package org.bird.spi; import java.util.ServiceLoader; public class SPIMain { public static void main(String[] args) { ServiceLoader<HelloInterface> loaders = ServiceLoader.load(HelloInterface.class); for(HelloInterface in : loaders) { in.sayHello(); } } }
运行结果如下:
Text Hello. Image Hello.
相关推荐
Java 基础(8-8)-Java常用机制 - SPI机制详解
JAVA SPI机制的文档总结,包含相关演示工程
Java类加载及SPI机制.pdf
可以使用Java 提供的SPI机制 什么是SPI?SPI和API的区别 SPI SPI的全称是Service Provider Interface,是Java提供的可用于第三方实现和扩展的机制,通过该机制,我们可以实现解耦,SPI接口方负责定义和提供默认...
demo-java-spi a simple demo for jdk spi(Service Prodiver Interface) ###前提概述 在面向对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了...
Java SPI 机制(SPI实战+ServiceLoader源码分析+SPI 应用场景+破坏双亲委派)
Java SPI机制详解.md
一款基于hdfs的ftp服务器,通过java的spi机制内置支持多hadoop版本,自带依赖,无需编译即可使用。
主要介绍了Java的SPI机制实例详解的相关资料,需要的朋友可以参考下
1. 在META-INF/services/目录中创建以接口完全限定名命名的文件,该文件内容为Api具体实现类的全限定名 2. 使用ServiceLoader类
这个资源是我的博客《java SPI机制学习笔记》中的提供服务的jar包
Java类加载及SPI机制
主要介绍了Java SPI机制原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
spi服务提供者和服务调用Demo,包括服务接口定义,服务实现,服务配置以及服务调用示例。
主要介绍了深入学习Java中的SPI机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了详解java实践SPI机制及浅析源码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
人工智能-hadoop
SPI(Service Provider Interface)是 Java 中一种基于接口的服务发现机制,旨在实现代码解耦和可扩展性。通过 SPI,开发者可以定义一组接口,而具体的实现则由不同的提供者来提供,实现了解耦的目的。 SPI 机制使得...
在本篇文章里小编给大家整理的是一篇关于Java SPI 机制知识点总结内容,需要的朋友们可以参考下。
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...