首页 > 其他分享 >spi~在插件开发过程中的使用

spi~在插件开发过程中的使用

时间:2023-02-07 18:22:05浏览次数:44  
标签:插件 bos len spi 开发 组件 new bufSize

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();

结果

注意,在组件内部读文件时,需要采用文件流的方式,否则,在调用地将出现无法加载的问题

标签:插件,bos,len,spi,开发,组件,new,bufSize
From: https://www.cnblogs.com/lori/p/17099425.html

相关文章

  • STM32MP157开发板Linux+Qt项目实战:智慧家庭
    stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux+单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7......
  • 互联网医院开发|监管平台对接
    互联网医院已经被全国各地的好多医院启用了,给医院和患者都带了大大的便利,而且很多地方的互联网医院也已经对接的医保系统,可以实现线上看病也走医保的流程,现在监管平台也已经......
  • 开发代码质量差的解决办法
    首先问题分析:了解一下代码差的原因,主要以下几个方面:(1)需求理解错误(2)开发能力不足(3)提测之前不自测(4)自测只停留在表面(5)遇......
  • 开发&运维如何对接口响应时间慢问题,快速定界排查?
    01问题背景自建机房,生产环境上某接口耗时超过2s,接口实现逻辑包含:数据库读写下游api调用数据统计开发本地自测,接口耗时却只有106ms。于是开发问运维:“生产环境的网络确定没......
  • LeaRun快速开发平台:自由搭建个性化门户
    门户是一个应用软件呈现给用户的第一印象,它作为应用框架,将各种应用系统、数据资源和互联网资源集成整合到一个信息管理平台上,再用统一界面呈现给用户,使企业可以快速建立企......
  • 沉浸式翻译插件:沉浸式网页双语翻译
    使用沉浸式翻译的起因前一段时间谷歌翻译宣布跑路,不再对大陆用户提供服务。听闻这一噩耗我不由得心里一惊,燕子!啊不是,谷歌没有你我可咋活呀!对于没太大工作需求,顶多遇上几个......
  • 强大的word插件,让工作更高效:不坑盒子 2023版
    不坑盒子简介很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,这是一个非常好用的插件工具,专门应用在Word文......
  • 开心档-软件开发入门之MongoDB 覆盖索引查询
     作者简介:每天分享​​MongoDB教程​的学习经验、和学习笔记。  座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。个人主页:​​雪奈椰子的主页​​ 前......
  • 开心档-软件开发入门之MongoDB 创建集合
    作者简介:每天分享​​MongoDB教程​​的学习经验、和学习笔记。  座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。​个人主页:​​雪奈椰子的主页​​​......
  • LeaRun快速开发平台:自由搭建个性化门户
    门户是一个应用软件呈现给用户的第一印象,它作为应用框架,将各种应用系统、数据资源和互联网资源集成整合到一个信息管理平台上,再用统一界面呈现给用户,使企业可以快速建立企业......