JVM中SPI的概念和应用
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"JVM中SPI的概念和应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JVM中SPI的概念和应用"吧!概念Service Provid
千家信息网最后更新 2025年12月03日JVM中SPI的概念和应用
本篇内容主要讲解"JVM中SPI的概念和应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JVM中SPI的概念和应用"吧!
概念
Service Provider Interface
规则
在resource/META-INF/services 创建一个以接口全限定名为命名的文件,内容写上实现类的全限定名
接口实现类在classpath路径下
主程序通过 java.util.ServiceLoader 动态装载实现模块(扫描META-INF/services目录下的配置文件找到实现类,装载到 JVM)
好处
解耦,主程序和实现类之间不用硬编码
例子
package com.mousycoder.mycode.thinking_in_jvm;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-16 16:14 */public interface SPIService { void execute();}package com.mousycoder.mycode.thinking_in_jvm;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-16 16:16 */public class SpiImpl1 implements SPIService { @Override public void execute() { System.out.println("SpiImpl1.execute()"); }}package com.mousycoder.mycode.thinking_in_jvm;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-16 16:16 */public class SpiImpl2 implements SPIService { @Override public void execute() { System.out.println("SpiImpl2.execute()"); }}在 resources/META-INF/services/目录下创建文件名为com.mousycoder.mycode.thinking_in_jvm.SPIService的文件,内容 com.mousycoder.mycode.thinking_in_jvm.SpiImpl1 com.mousycoder.mycode.thinking_in_jvm.SpiImpl2
主程序
package com.mousycoder.mycode.thinking_in_jvm;import sun.misc.Service;import java.util.Iterator;import java.util.ServiceLoader;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-16 16:21 */public class SPIMain { public static void main(String[] args) { Iterator providers = Service.providers(SPIService.class); ServiceLoader load = ServiceLoader.load(SPIService.class); while (providers.hasNext()){ SPIService ser = providers.next(); ser.execute(); } System.out.println("-----------------------"); Iterator iterator = load.iterator(); while (iterator.hasNext()){ SPIService ser = iterator.next(); ser.execute(); } }} 输出
SpiImpl1.execute()SpiImpl2.execute()-----------------------SpiImpl1.execute()SpiImpl2.execute()
到此,相信大家对"JVM中SPI的概念和应用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
概念
内容
文件
应用
主程序
接口
目录
学习
装载
实用
更深
不用
之间
例子
兴趣
动态
好处
实用性
实际
操作简单
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何查看手机连接游戏服务器
武器系统软件开发文档
保密工作网络安全管理
高中信息技术网络技术
软件开发一定要会英语
以下是关系数据库的优点
spl数据库添加图片
我的世界网易100人服务器
聚美优品电子商务网络安全
上海技术网络技术服务保障
攻击服务器流程
网络安全咨询厂家
丽水计算机网络技术咨询服务
石家庄企业软件开发服务商
数据库刷新为null
福建师大计算机与网络安全学院
网络安全检测备案
图技术 数据库
医院附近的网络安全吗
朋友圈发游戏需要租服务器吗
滨湖区项目软件开发活动简介
属网络安全几级违规
现货自动交易软件开发
新网络安全法2017内容
松下软件开发大连面试
vs访问页面用的是什么服务器
我的世界网易100人服务器
软件开发工作一年年终奖
广州爱电牛互联网科技..
公司网络安全会