iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java的SPI机制是什么
  • 462
分享到

Java的SPI机制是什么

2023-06-17 12:06:41 462人浏览 独家记忆
摘要

本篇内容介绍了“Java的SPI机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SPI的全名为Service Provider In

本篇内容介绍了“Java的SPI机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

SPI的全名为Service Provider Interface.普通开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。究其思想,其实是和"Callback"差不多。“Callback”的思想是在我们调用api的时候,我们可以自己写一段逻辑代码,传入到API里面,API内部在合适的时候会调用它,从而实现某种程度的“定制”。

典型的是Collections.sort(List<T> list,Comparator<? super T> c)这个方法,它的第二个参数是一个实现Comparator接口的实例。我们可以根据自己的排序规则写一个类,实现此接口,传入此方法,那么这个方法就会根据我们的规则对list进行排序。

把这个思想扩展开来,我们用SPI来重新实现上面的例子。客户把自己的排序规则写成一个类,并且打包成jar文件,这个Jar文件里面必须有META-INF目录,其下又有services目录,其下有一个文本文件,文件名即为接口的全名:java.util.Comparator。

--META-INF--services--java.util.Comparator

文件内容只有一行:

com.company1.ComparatorProvider

这一行是你实现了Comparator接口的类的全名,它的代码如下:

package com.company1; import java.util.Comparator; import com.mycompany.myapp.MyItem; public class ComparatorProvider implements Comparator<MyItem>{  @Override public int compare(MyItem o1, MyItem o2) { //依据name排序 return o1.getName().compareTo(o2.getName()); } }

编译打包后,把它放到你的主程序的class path里。下面是你的主程序:

//从class path中所有Jar的META-INF目录中搜索,找到合适的类并加载。 private static ServiceLoader<Comparator> serviceLoader = ServiceLoader.load(Comparator.class); public static void main(String[] args) { List<MyItem> myList = new ArrayList<MyItem>(); myList.add(new MyItem(2,"c","hhh")); myList.add(new MyItem(3,"k","ooo")); myList.add(new MyItem(4,"d","ppp")); myList.add(new MyItem(5,"b","ggg")); showList(myList); Collections.sort(myList,getCompartor()); showList(myList); } @SuppressWarnings("unchecked") private static Comparator<MyItem> getCompartor() { for(Comparator service : serviceLoader) { return (Comparator<MyItem>)service; } return null; }

要注意的是serviceLoader开始只是加载类,实例化要到***次用的时候。类MyItem和方法showList并不重要,所以你不必在意。你可以按照这个规则,写另外一个排序规则的Jar,随时可以更换你的排序规则。

“Java的SPI机制是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java的SPI机制是什么

本文链接: https://www.lsjlt.com/news/288860.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java的SPI机制是什么
    本篇内容介绍了“Java的SPI机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SPI的全名为Service Provider In...
    99+
    2023-06-17
  • Java中的SPI机制是什么
    这篇文章主要介绍“Java中的SPI机制是什么”,在日常操作中,相信很多人在Java中的SPI机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的SPI机制是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • 什么是Dubbo SPI机制
    本篇内容主要讲解“什么是Dubbo SPI机制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Dubbo SPI机制”吧!SPI是什么SPI是一种简称,全名叫 Service Provide...
    99+
    2023-06-15
  • dubbo的spi机制有什么用途
    Dubbo的SPI(Service Provider Interface)机制可以实现插件化的扩展和灵活的配置,让用户可以在不修改源...
    99+
    2024-04-03
    dubbo
  • Java中怎么实现SPI机制
    Java中怎么实现SPI机制,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。2 什么是SPI机制SPI是Service Provider Interface 的简...
    99+
    2023-06-16
  • 怎么进行Java SPI机制的分析
    这篇文章将为大家详细讲解有关怎么进行Java SPI机制的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么需要SPI?思考一个场景,我们封装了一套服务,别人通过引入我们写好...
    99+
    2023-06-22
  • JAVA中的SPI是什么意思
    这篇文章主要介绍了JAVA中的SPI是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. SPI介绍SPI全称Service Provider Interface,是...
    99+
    2023-06-29
  • java中SPI的作用是什么
    这篇文章将为大家详细讲解有关java中SPI的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类...
    99+
    2023-06-14
  • Java中的SPI机制案例分享
    目录1 简单介绍2 SPI 案例3 SPI 的原理剖析1 简单介绍 当我们封装了一套接口,其它项目想要调用我们的接口只需要引入我们写好的包,但是其它项目如果想要对我们的接口进行扩展,...
    99+
    2024-04-02
  • 如何理解Java中的SPI机制
    本篇内容介绍了“如何理解Java中的SPI机制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SPI的概念SPI在Java中的全称为Servi...
    99+
    2023-06-15
  • Java进阶之SPI机制详解
    目录一、前言二、SPI规范三、SPI应用案例3.1 数据库驱动3.2 Slf4j四、SPI示例4.1 spi-operate-service模块4.2 spi-operat...
    99+
    2024-04-02
  • Java中的SPI机制有哪些作用
    Java中的SPI机制有哪些作用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java的SPI机制实例详解SPI的全名为Service Provider Interface.普...
    99+
    2023-05-31
    java spi机制
  • Java和Dubbo的SPI机制原理解析
    SPI: 简单理解就是,你一个接口有多种实现,然后在代码运行时候,具体选用那个实现,这时候我们就可以通过一些特定的方式来告诉程序寻用那个实现类,这就是SPI。 JAVA的SPI 全称...
    99+
    2024-04-02
  • Java Spring Dubbo三种SPI机制的区别
    目录前言SPI 有什么用?​JDK SPI​Dubbo SPISpring SPI​对比​前言 SPI 全称为 Service Provider Interface,是一种服务发现机...
    99+
    2024-04-02
  • java SPI的使用场景是什么
    本文小编为大家详细介绍“java SPI的使用场景是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“java SPI的使用场景是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。概念SPI是服务提供界面,JD...
    99+
    2023-06-30
  • 一文搞懂Java的SPI机制(推荐)
    目录1 简介缺点 源码使用适用场景插件扩展案例1 简介 SPI,Service Provider Interface,一种服务发现机制。 有了SPI,即可实现服务接口与服务实现的解...
    99+
    2024-04-02
  • 一文带你了解Java中的SPI机制
    目录1: SPI机制简介2: SPI原理3: 使用场景4: 源码论证5: 实战6: 优缺点6.1 优点6.2 缺点1: SPI机制简介 SPI 全称是 ...
    99+
    2023-05-15
    Java SPI机制原理 Java SPI机制使用 Java SPI机制
  • Java进阶之SPI机制的示例分析
    这篇文章将为大家详细讲解有关Java进阶之SPI机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言SPI的英文全称为Service Provider Interface,字面意思为服务提...
    99+
    2023-06-15
  • Apache Dubbo的SPI机制是如何实现的
    目录一、SPI1.1 JDK自带SPI实现 1.2 Dubbo SPI 二、加载-ExtensionLoader 2.1 获取ExtensionLoader的实例 2.2 加载扩展类...
    99+
    2024-04-02
  • Java的ClassLoader机制是什么
    本篇内容介绍了“Java的ClassLoader机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JVM在加载类的时候,都是通过Cla...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作