Java1.6开始提供了ServiceLoader类来支持SPI。
1. 写好接口:
public interface Service1 {
public void sayHello();
}
2. 两个实现类:
public class ServiceImpl implements Service1 {
public void sayHello(){
System.out.println("hello");
}
}
public class ServiceImpl2 implements Service1{
@Override
public void sayHello() {
System.out.println("hello, service 1");
}
}
3. 打到jar包中,目录结构如下:
--META-INF
--services
--Service1
--Service1.class
--ServiceImpl.class
--ServiceImpl2.class
Service1是文本文件,内容是所有实现类的类名:
ServiceImpl
ServiceImpl2
4. 把打好的jar包放到classpath中,写程序调用此SPI。
import java.util.ServiceLoader;
public class ServiceTest {
public static void main(String[] args) {
ServiceLoader<Service1> serviceLoader = ServiceLoader.load(Service1.class);
for(Service1 serv : serviceLoader){
serv.sayHello();
}
}
}
结果:
hello
hello, service 1
分享到:
相关推荐
标题“Java SPI 学习记录”表明我们将探讨这个重要的Java特性,并分享学习过程中的一些理解和实践。这篇博客可能涵盖了SPI的基本概念、工作原理以及如何在实际项目中应用SPI。 描述中提到的链接指向了一篇特定的...
Java spi学习与Spring Boot自定义starter、开箱即用starter
Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务提供...在这个"java spi实现工程"中,我们可以学习如何创建、配置和服务加载,从而更好地理解和应用Java SPI。
这个资源是我的博客《java SPI机制学习笔记》中的提供服务的jar包
Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务实现。这个机制使得开发者可以扩展已存在的应用程序或库,而无需修改原代码。SPI的核心理念是将服务接口与其...
通过这个项目,开发者可以学习到如何将Java SPI和Spring Factories结合使用,以实现灵活、可扩展的插件化系统。 总结来说,Java SPI和Spring Factories都是为了提升软件的可扩展性和灵活性。前者利用标准的Java机制...
Java序列化详解泛型&通配符详解Java 引用机制详解Java代理模式详解BigDecimal 详细解Java 魔法类 Unsafe 详细解Java SPI 机制详解Java语法糖详解集合知识点/面试题总结:Java集合常见知识点&面试题总结(上)(必看...
SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许第三方开发者为已存在的接口提供实现。在Android系统中,虽然没有直接使用Java SPI,但Android的组件化思想与SPI有相似之处,尤其是在构建...
在IT行业中,尤其是在软件开发领域,集成不同的...以上就是这个项目中涉及到的主要技术点和知识点,它们涵盖了Java开发、云服务集成、源码管理和软件设计等多个方面,对于Java开发者来说,是一个很好的学习和实践资源。
"深入学习Java中的SPI机制" Java中的SPI(Service Provider Interface)机制是一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用。SPI机制的主要思想是将装配的控制权移到程序...
Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结: Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&面试题总结(下) (必看 ) Java 容器使用注意事项总结 源码分析: ArrayList 核心...
Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结 : Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&面试题总结(下) (必看 ) Java 容器使用注意事项总结 源码分析 : ArrayList 源码...
Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结: Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&面试题总结(下) (必看 ) Java 容器使用注意事项总结 源码分析: ArrayList 源码+...
### Java Sound API 学习资料知识点详述 #### 一、Java Sound API 体系结构 Java Sound API 是 Java 平台上处理音频的核心组件之一,它为开发者提供了丰富的工具集,以便于开发各种基于声音的应用程序,例如声音...
Java序列化详解泛型&通配符详解Java 引用机制详解Java代理模式详解BigDecimal 详细解Java 魔法类 Unsafe 详细解Java SPI 机制详解Java语法糖详解集合知识点/面试题总结:Java集合常见知识点&面试题总结(上)(必看...
框架开发学习 此仓库给出了在框架开发中经常使用的不同Java概念和编程技术的示例。 例如,当我们想从头开始创建RPC框架时,我们需要了解Java动态代理和序列化...Java SPI java-spi JDBC 完毕 Java零拷贝 Java零复制
SPI(Serial Peripheral Interface)是一种全双工、同步串行通信...通过这些资源,开发者可以学习到SPI接口的基本原理,了解在ARM和Linux系统下实现SPI通信的方法,以及如何设计和调试SPI-Flash驱动和点阵屏显示程序。
SPI(Service Provider Interface)是Java平台中的一个标准接口,它允许Java应用程序在运行时动态发现和加载服务提供商。...这样的示例对于学习和实践Java的高级特性非常有帮助,能够提高代码的可维护性和可扩展性。
通过这个项目,你可以深入理解Java SPI和Dubbo SPI的区别,学习如何在实际项目中应用Dubbo的扩展机制。这对于提升Java开发者,特别是从事微服务开发的人员来说,是非常有价值的参考资料。同时,了解和掌握Dubbo SPI...