JVM中SPI的概念和应用
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇内容主要讲解"JVM中SPI的概念和应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JVM中SPI的概念和应用"吧!概念Service Provid
千家信息网最后更新 2025年02月02日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) { Iteratorproviders = 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安全错误
数据库的锁怎样保障安全
顺丰软件开发怎么样
医疗his系统数据库
昆明软件开发工程师培训班
浙江计算机网络技术服务
uu安全服务器
163邮箱服务器的授权密码
临沂星概念网络技术有限公司
服务器远程桌面会话满了
东方国信网络安全审查
国防七子网络安全
网络安全需要什么专业知识
系统转数据库
东莞新华互联网科技有限公司
河南信鼎网络技术有限公司
数据库授予对象权限
传奇服务器引擎
企业网网络安全的策略制定
许昌网络安全工程师的一天
许昌网络技术质量
网络安全教育目的要求
北京网络安全薪水待遇
中国电信解析服务器
服务器的安全狗可御载吗
洛阳市软件开发培训
统计网络安全事件案例
郑州程序软件开发报价
XW网络安全保障
数据库对软件开发重要吗
部队网络安全保密
如何压缩mssql数据库大小