`
javafan_303
  • 浏览: 957732 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java spi 简介

    博客分类:
  • spi
 
阅读更多

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现,

而后,把新加的实现,描述给JDK知道就行啦(通过改一个文本文件即可) 公司内部,目前Dubbo框架就基于SPI机制提供扩展功能。

简单示例

通过一个简单例子来说明SPI是如何使用的。 首先通过一张图来看看,用SPI需要遵循哪些规范,因为spi毕竟是JDK的一种标准。 "" 我们首先需要一个目录,META-INF\services 如下,最终的目录路径就像这样:

1
2
3
4
5
6
7
8
9
10
11
12
└── src
├── com
│   └── ivanzhang
│       └── spi
│           ├── HelloInterface.java
│           ├── impl
│           │   ├── ImageHello.java
│           │   └── TextHello.java
│           └── SPIMain.java
└── META-INF
    └── services
        └── com.ivanzhang.spi.HelloInterface

文件名字为 接口/抽象类: 全名 文件内容: 接口/抽象类 实现类

就像这样: com.ivanzhang.spi.impl.TextHello com.ivanzhang.spi.impl.ImageHello

接下来, 我们需要定义接口和实现类:

1
2
3
public interface HelloInterface {
  public void sayHello();
}

实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class TextHello implements HelloInterface {
  @Override
  public void sayHello() {
      System.out.println("Text Hello.");
  }
}
public class ImageHello implements HelloInterface {
  @Override
  public void sayHello() {
      System.out.println("Image Hello");
  }
}

最后,来看看,如果使用SPI机制,客户端代码:

1
2
3
4
5
6
7
8
9
10
11
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)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务提供商。这个机制使得开发者可以扩展应用的功能,而无需修改原有代码。SPI的核心概念在于,服务接口由主程序...

    java spi 可运行 demo

    Java SPI(Service Provider Interface)是Java标准库提供的一种服务发现机制,它允许程序在运行时动态地查找并加载实现特定接口的服务提供商。SPI的核心概念在于将服务接口与其实现类解耦,使得开发者可以在不修改...

    java SPI的jar包

    这个资源是我的博客《java SPI机制学习笔记》中的提供服务的jar包

    Java SPI Demo

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载和使用服务提供商。这个机制使得开发者可以扩展应用程序的功能,而不需要修改应用程序的代码。在Java SPI中,...

    Java SPI 机制(SPI实战+ServiceLoader源码分析+SPI 应用场景+破坏双亲委派)

    Java SPI 机制详解 Java SPI 机制,全称 Service Provider Interface,是 Java 内置的服务发现机制。SPI 机制的主要思想是解耦,通过提供一个标准接口,允许第三方提供实现类,而无需在程序中硬编码。SPI 机制广泛...

    java对于MP3的spi

    Java平台扩展机制(Service Provider Interface, SPI)是一种允许第三方开发者扩展Java应用程序或库的功能的方式。在Java Sound API中,SPI扮演着关键角色,使得开发者能够添加对不同音频格式的支持,如MP3。MP3 SPI...

    spi-demo java spi小例子

    java spi简单参考,url:https://blog.csdn.net/a925907195/article/details/87088744 主类:testcase,代码很简单,只是自己写个demo看看运行原理

    java-mp3spi

    Java MP3SPI,全称Java Media Framework (JMF) MP3 Service Provider Interface,是一个用于在Java平台上处理MP3音频文件的扩展库。它基于Java Media Framework (JMF),提供了对MP3格式音频流的支持,使得Java开发者...

    java的spi测试

    Java的Service Provider Interface (SPI) 是一种用于在运行时动态发现和加载服务提供者实现的机制。这个功能在Java标准库中被广泛使用,允许开发者扩展JVM的功能,而无需修改核心API。在这个"java的spi测试"中,我们...

    java mp3spi jar

    java mp3spi jar java 处理mp3 jar 包

    java spi 学习记录

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载和使用服务提供商。SPI机制使得开发者可以扩展程序的功能,而无需修改原代码,极大地提高了软件的可扩展性和模块...

    java spi-demo示例

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载和使用服务提供商。SPI机制使得开发者可以扩展程序的功能,而无需修改原代码,极大地提高了软件的可扩展性和模块...

    Java SPI的简单小实例

    Java SPI的简单小实例 Java SPI(Service Provider Interface)是一种Java标准机制,允许应用程序在运行时发现和加载服务提供者。Java SPI的主要思想是将服务接口和服务实现分离,使得服务实现可以独立于服务接口...

    java-spi学习例子

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务实现。这个机制使得开发者可以扩展已存在的应用程序或库,而无需修改原代码。SPI的核心理念是将服务接口与其...

    java代码 干旱SPI逐日计算,基于mysql数据库

    在Java编程环境中,开发一个基于MySQL数据库的SPI计算系统,可以有效地处理和分析大量的气象数据。 首先,我们需要了解SPI计算的基本原理。SPI是通过对历史降水数据进行统计转换得出的,通常采用经验累积概率分布...

    Java类加载及SPI机制.pdf

    Java类加载机制和SPI(ServiceProviderInterface)机制是Java平台中极其重要的两个概念,它们对于Java程序的灵活性和可扩展性起到关键作用。下面详细解释这两个机制的概念、原理和应用场景。 类加载机制是Java...

    Java的Spi使用实例

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务实现。这个机制使得开发者能够将核心功能模块化,然后由其他开发者提供不同的实现来扩展系统功能。SPI的核心...

    Java SPI机制详解.md

    Java SPI机制详解.md

    采用Java SPI和Spring factories来实现插件化的demo

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许第三方开发者为Java应用程序提供扩展服务。Spring Factories则是Spring框架中用于自动配置和服务发现的一种机制,它基于类路径下的...

    java SPI机制实现服务接口和服务实现分离源码Demo

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务实现。这种机制使得应用程序能够与多个第三方组件进行交互,而无需在编译时硬编码具体的实现类。SPI机制的...

Global site tag (gtag.js) - Google Analytics