Java的SPI机制学习笔记
2023-02-18 16:33:55 时间
SPI的全称为service provider interface,最初是提供给厂商做插件开发的,概况来说就是java提供了一种插件的方式,通过修改项目之外的一些配置即可做到代码逻辑的变动。这块我们学习一下java定义的这种特性如何使用。
Java spi使用了策略模式,一个接口多种实现。我们只需申明接口,具体的实现并不在程序中直接确认,而是有程序之外的配置决定。具体的实现步骤如下:
1、定义一个接口
2、编写接口的实现类
3、在resource/META-INF/services/目录下创建以接口全路径命名的文件。
4、在步骤3中的文件中添加步骤2的实现类的全路径
5、通过java.util.serviceLoader来加载具体的实现类。
这块大概写个demo
测试调用方法:
public class Test {
public static void main(String[] args) {
Iterator provider = Service.providers(MySpi.class);
ServiceLoader loader = ServiceLoader.load(MySpi.class);
while (provider.hasNext()){
MySpi mySpi = (MySpi) provider.next();
mySpi.print();
}
Iterator iterator=loader.iterator();
while (iterator.hasNext()){
MySpi mySpi= (MySpi) iterator.next();
mySpi.print();
}
}
}
JAVA的SPI机制更多的使用是在框架层面的扩展,比如MySql的驱动器的加载,SpringFacties文件内容的加载也使用到了SPI机制。我们大概了解一下JAVA提供的这种机制,因为Dubbo使用到这种SPI机制,当然Dubbo对其进行一些改变,我们提前了解下,这样后边就相对比较容易了。
很多问题我们知道一些条件那么它的整体就全知道了,SPI机制就是这样的最简单的例子,我们把接口和实现类的关系通过文件名和文件内容进行了关联,所以这是明确的,SPI机制本质上也就是个小创新而已。
晚安
相关文章
- 论文/代码速递2022.10.19!
- 论文/代码速递2022.10.20!
- 【AI绘画】如何优雅的在本地配置 nounovelai ?
- 英伟达最新成果!基于NeRF的并行优化方法,可用于6D姿态估计!论文/代码速递2022.10.21!
- 论文/代码速递2022.10.24!
- 低分辨率人脸识别!注意力相似性知识提取方法!论文/代码速递2022.10.25!
- 论文/代码速递2022.10.26!
- ECCV 2022 | 开放集半监督目标检测!论文/代码速递2022.10.27!
- 论文/代码速递2022.10.28!
- SCI语料库!学术写作神器——Academic Phrasebank
- 查找表实现高效的图像超分辨率!论文/代码速递2022.10.31!
- 论文/代码速递2022.11.1!
- ECCV2022 | 通过网格实现辐射场的自由变形! 已开源!论文/代码速递2022.11.2!
- DELTAR:轻量级 ToF 传感器和 RGB 图像的深度估计!论文/代码速递2022.11.3!
- AI绘画!英伟达最新文图生成模型!质量优于Stable Diffusion和Dalle2!论文/代码速递2022.11.4!
- 论文/代码速递2022.11.7!
- 论文/代码速递2022.11.8!
- FactorMatte:最新视频抠图算法,更适合于视频合成任务!论文/代码速递2022.11.9!
- 论文/代码速递2022.11.10!
- 如何在深度学习结构中使用纹理特征