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 SPI 机制详解 Java SPI(Service Provider Interface)机制是一种服务提供发现机制,能够实现框架的扩展和替换组件,主要被框架的开发人员使用。SPI 机制的核心思想是将装配的控制权移到程序之外,在模块化...
Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务实现。这个机制使得开发者可以扩展已存在的应用程序或库,而无需修改原代码。SPI的核心理念是将服务接口与其...
SPI(Service Provider Interface)在Java中是一个用于动态发现和加载服务的机制。它允许第三方开发者提供实现特定接口的服务,并在运行时被应用程序自动发现和使用。在Aether中,SPI接口定义了一系列方法,如检索、...
SPI机制的核心在于`java.util.ServiceLoader`类,它是Java平台的标准服务加载器,用于加载符合特定规范的服务实现。 **一、SPI的工作原理** 1. **定义服务接口**:首先,开发者定义一个公共的接口,这个接口定义了...
总的来说,`arquillian-config-spi.jar`是Arquillian框架中的一个重要组成部分,它通过SPI机制实现了配置服务的可扩展性。理解并熟练掌握这一接口,能够帮助开发者更高效地利用Arquillian进行企业级Java应用的测试,...
总结一下,"aether-spi-1.9.jar.zip"是一个包含Aether SPI组件的Java库,版本1.9,它涉及了Java的SPI机制,用于扩展Maven仓库处理功能。开发者可以通过解压文件,然后在项目中引用"aether-spi-1.9.jar"来利用其提供...
Java SPI 机制详解 Java SPI 机制,全称 Service Provider Interface,是 Java 内置的服务发现机制。SPI 机制的主要思想是解耦,通过提供一个标准接口,允许第三方提供实现类,而无需在程序中硬编码。SPI 机制广泛...
SPI是一种允许第三方扩展或实现特定服务的机制。在这个JAR包中,包含了用于容器测试的服务接口和抽象类,它们定义了如何与不同的容器进行交互,进行测试生命周期的管理,如启动、停止容器,部署和卸载应用程序等。...
在Java中,SPI机制允许开发者为某个接口提供多种实现,而这些实现可以在运行时被应用程序发现并加载,无需硬编码特定实现的引用。例如,Aether可能使用SPI来让开发者可以自定义仓库解析策略或者插件处理方式。 标签...
而SPI机制则提供了一种通用的方式来扩展Java平台功能,使得Java开发者可以在不修改源码的情况下增强平台或第三方库的功能。在实际开发过程中,深入理解和正确使用这两个机制,对于提升软件的灵活性、可维护性以及可...
总结一下,"aether-spi.jar.zip"是一个包含Aether SPI服务提供者接口的Java JAR文件,它是Maven依赖解析机制的一部分,用于处理和管理Java项目的依赖。开发者在使用这个JAR时,需要了解其与Aether库和Maven生态系统...
SPI是Java平台提供的一种机制,允许第三方开发者为特定的接口提供实现。通过在类路径下的特定目录下放置服务提供者的配置文件,应用可以在运行时动态发现并加载这些服务实现。Aether SPI可能是指Aether库中可以被...
Arquillian SPI的设计基于Java的ServiceLoader机制,这是一个用于加载服务提供者实现的API。通过SPI,Arquillian能够发现并使用插件或适配器,这些插件和适配器可以是针对不同测试容器(如JBoss AS、Tomcat、...
可以使用Java 提供的SPI机制 什么是SPI?SPI和API的区别 SPI SPI的全称是Service Provider Interface,是Java提供的可用于第三方实现和扩展的机制,通过该机制,我们可以实现解耦,SPI接口方负责定义和提供默认...
Arquillian Test SPI是该框架的一部分,它是扩展Arquillian功能的核心机制,允许开发者创建自定义的测试适配器和服务,以满足特定的测试需求。 1. **Arquillian Test SPI概述**: Arquillian Test SPI提供了一种...
总的来说,Arquillian Core SPI是Java集成测试领域的一个强大工具,它通过SPI机制降低了测试复杂性,提高了测试的可扩展性和灵活性。对于那些需要在多种环境下进行严格测试的项目,Arquillian Core SPI无疑是一个...
SPI是Java平台中用于扩展应用程序的一种机制,允许第三方开发者提供实现特定接口的服务,而应用程序可以在运行时动态发现和加载这些服务。 描述 "pjl-comp-filter.zip,他的过滤器可以基于httpservletrequest中的...
demo-java-spi a simple demo for jdk spi(Service Prodiver Interface) ###前提概述 在面向对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了...
在Java世界中,SPI是一种允许应用程序在运行时动态发现和使用服务的机制。它为Java平台提供了一种开放的、可扩展的框架,使得第三方开发者可以为JVM中的核心服务添加新的实现。 【描述】提到的"stream-lib.zip"则是...
SPI是Java提供的一种服务发现机制,允许第三方开发者扩展已有的软件系统。在这个特定的案例中,arquillian-drone-spi-1.3.0.Final.zip包含的是用于自定义或增强Drone行为的服务接口和实现。 Arquillian Drone的核心...