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

JAVA SPI规范

 
阅读更多

最近看dubbo的源代码,发现很多对不同的容器,序列化方式提供了不同的实现,实现的机制是通过

JAVA SPI 来实现的,就是基于接口的服务发现,一个接口不同的实现底层,而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入

package com.ljq.code;

public interface JavaSPI {

	String fromWho();
}

 

实现:

package com.ljq.code;

public class American implements JavaSPI {

	public String fromWho() {
		return "FROM American";
	}

}

 

实现2:

package com.ljq.code;

public class China implements JavaSPI {

	@Override
	public String fromWho() {
		return "from china";
	}

}

 

在META-INF/services/下建立一个名称为com.ljq.code.JavaSPI 文件,接口的全限定名称

输入 类的实现全限定名

com.ljq.code.China

 

客户端调用:

package com.ljq.code;

import java.util.Iterator;
import java.util.ServiceLoader;

public class ClientSPI {

	public static void main(String[] args) {
		ServiceLoader<JavaSPI> s = ServiceLoader.load(JavaSPI.class);
		Iterator<JavaSPI> it = s.iterator();
		while (it.hasNext()) {
			System.out.println("------HELLO------");
			JavaSPI spi = it.next();
			System.out.println(spi.fromWho());
		}

	}
}

 

 

分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含...

    Java 1.6 API 中文 New

    java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本...

    Java_EE_6规范中文版

    javaee 6 规范 chm版本 第1章 引言 1.1 感谢 1.2 版本1.3的感谢 1.3 版本1.4的感谢 ...13.1 JNLP(Java Web Start) 13.2 Java EE SPI 附录 附录A 早期版本的部署描述符 附录B 修订历史 科瑞网酷

    java api最新7.0

    java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本...

    JavaAPI1.6中文chm文档 part1

    java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理...

    JavaAPI中文chm文档 part2

    java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理...

    java jdk-api-1.6 中文 chmd

    java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理...

    Java-PrintService-Java打印-中文版API.docx

    Java Print Service (JPS)是一个Java打印API,设计此API是为了支持在所有Java平台上的打印工作——包括微空间平台,并且支持现有的API。这个统一的打印 API包括了IETF规范RFC 2911中Internet Printing Protocol (IPP...

    [Java参考文档]

    java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理...

    [Java参考文档].JDK_API 1.6

    java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本...

    JavaEE 5.0规范中文版

    Java EE规范5.0规定了构建JavaEE应用需要的元素,及其元素间的约定和相关的SPI,API。是深入全面研究JavaEE 5.0的必备。

    JDK_API_1_6_zh_CN_downcc.com.zip 良心一级分

    本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含...

    Java后端开发库,涵盖:常用工具类、SPI扩展、分布式锁、限流、分布式链路追踪等。.zip

    对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序界面模型,并生成规范的设计稿供开发人员参考实现。 跨平台支持: 跨平台开发工具如Xamarin、React Native和Flutter,让...

    sdk-java:用于无服务器工作流的Java SDK

    无服务器工作流程规范-Java SDK 为提供Java API / SPI和模型验证 使用SDK,您可以: 解析工作流JSON和YAML定义 以编程方式构建工作流程定义 验证工作流程定义(模式和工作流程完整性验证) 生成工作流程图(SVG)...

    JDK_1_6 API

    JAVA开发人员必备是HTML格式的 JavaTM 2 Platform Standard Edition 6 API 规范 本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet ...

    r2dbc-spi:R2DBC实现的服务提供者接口

    React型关系数据库连接服务提供者接口(R2DBC SPI) 响应式关系数据库连接(R2DBC)项目将响应式编程API引入关系数据库。 R2DBC是一个项目。 简而言之 基于无功流规范。 R2DBC建立在Reactive Streams规范的基础上,...

    mybatis-book::books:《 Mybatis3原始码深度解析》随书原始码

    前言4第1篇Mybatis3源码7第1章构建Mybatis源码环境7 1.1 Mybatis3简介7 1.2环境准备7 1.3获取Mybatis源码8 1.4导入Mybatis源码到IDE 10 1.5 HSQLDB数据库简介13 1.6本章小结16第2章JDBC规范详解17 2.1 JDBC API简介...

Global site tag (gtag.js) - Google Analytics