您现在的位置是:首页 > Javascript
当前栏目
spi~在插件开发过程中的使用
2023-03-31 10:39:14 时间
spi是原生java的组件,通过META-INF/services目录进行注册,通过ServiceLoader进行加载,一般可以用在组件开发中,你在公用组件中封装好逻辑,将个性化的部分抽象出一个接口,接口通过spi的方式进行加载,在外部开发人员引用你的组件之后,通过实现接口来扩展个性化的功能,再通过META-INF/services对实现类进行注册。
组件端
先定义一个公开的接口
public interface SpiHello {
void printHello();
}
一个公开的组件
public static void print() {
InputStream resource = Tool.class.getClassLoader().getResourceAsStream("licence.txt");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int bufSize = 1024;
byte[] buffer = new byte[bufSize];
int len = 0;
while (true) {
try {
if (!(-1 != (len = resource.read(buffer, 0, bufSize))))
break;
}
catch (IOException e) {
throw new RuntimeException(e);
}
bos.write(buffer, 0, len);
}
ServiceLoader<SpiHello> spiHellos = ServiceLoader.load(SpiHello.class);
Iterator<SpiHello> iterable = spiHellos.iterator();
while (iterable.hasNext()) {
iterable.next().printHello();
}
System.out.println("value=" + bos.toString());
}
在开发人员使用时,需要注册他的实现类
com.lind.pk.Tool.print();
结果
注意,在组件内部读文件时,需要采用文件流的方式,否则,在调用地将出现无法加载的问题
相关文章
- 文本相似度判定
- 怎样新学一门技术? 从零到能写Web管理系统的经历
- 五种好用的实时网站分析工具
- 前端工程师如何打发闲余时光?
- 从无到有(统计、请求、MVC、模块化)H5开发须知
- 页面可视化搭建工具的前生今世
- 18个最好的响应式Web设计工具和库
- 每位Web设计师不可错过的20套Material设计资源
- 前端代码异常日志收集与监控
- 观点:Gartner只是否定Hadoop一体化平台模式
- PHP 和 Node.js 的10项对比挑战
- 为什么整个互联网行业都缺前端工程师?
- PHP vs Node.js 深入讨论
- 看看各大科技公司都是如何使用CSS的
- 来携程第一次当面试官的一点儿感想(面试前端)
- HTML中创建优雅表格八大JS工具不能缺
- Java UrlRewrite 实现网站URL重写过程实录
- WebViewJavascriptBridge-Obj-C和JavaScript互通消息的桥梁
- 从架构演进的角度聊聊Spring Cloud都做了些什么?
- SELinux 入门