首页 > 编程语言 >java-spi

java-spi

时间:2023-04-18 13:59:00浏览次数:31  
标签:java 实现 接口 spi OrderService 类名

不解释spi是啥了啊,就简单来看看他的作用吧。在java中,我们可以定义一个接口,然后通过具体的类来实现接口从而完成某种功能。

 这是典型的面向接口编程思维。这样做肯定没问题,但是接下来介绍一个新的方式来实现这个功能。就是java提供的spi机制。我这里创建两个OrderService的实现,方便演示更加直观。

 

 好的,写完了两个实现类以后,再在类路径下创建一个目录。目录名称必须固定。META-INF/services,如图

 然后在这个目录下创建一个文件,文件名称为OrderService的全限定类名,这个文件不需要后缀名

 然后在这个文件中写入两个具体实现类的全限定类名

 好的,至此。已经完成spi的步骤。接下来我们就来使用spi给我们提供的功能。

大家肯定在想,我们用什么方式来获取这两个实现类呢?还是直接看代码大家就懂了。

执行的顺序跟你在那个配置文件配置的顺序有关

 这里我就不测试了,大家可以试试玩玩。

ok,今天的随笔就到这里。很简单吧。

标签:java,实现,接口,spi,OrderService,类名
From: https://www.cnblogs.com/shenxingzhuge/p/17329293.html

相关文章

  • JAVA中文件写入的6种方法(转)
    https://www.cnblogs.com/rinack/p/14173936.html在Java中操作文件的方法本质上只有两种:字符流和字节流,而字节流和字符流的实现类又有很多,因此在文件写入时我们就可以选择各种各样的类来实现。我们本文就来盘点一下这些方法,顺便测试一下它们性能,以便为我们选出最优的写入方法。......
  • JAVA泛型擦除
    目录Java泛型直观看擦除泛型实现的相关定义树节点JCTypeParameter(类型参数树节点):JCWildcard(通配符树节点):类型ForAll(含有泛型变量声明的方法类型,主要辅助进行类型推断)泛型相关抽象语法树的生成抽象语法树生成解析类、接口、枚举的定义类声明解析参数化类型解析抽象语法树泛......
  • JavaScript 内的 this 指向
     在javascript语言中,有一个奇奇怪怪的"关键字"叫做this● 为什么说它是奇奇怪怪呢,是因为你写出100个this,可能有100个解释,完全不挨边● 但是,在你的学习过程中,搞清楚了this这个玩意,那么会对你的开发生涯有很大帮助的● 接下来咱们就开始一点一点......
  • JAVAC编译流程
    目录Javac编译过程入口java源代码词法分析->token流语法分析->抽象语法树语义分析->标注语法树AttrFlowLower代码生成->字节码Javac编译过程入口来源:com.sun.tools.javac.main.Main#compile(java.lang.String[])publicintcompile(String[]args){//创......
  • 论 java.net.SocketException: sendto failed: EPIPE (Broken pipe) 的解决办法
    这里只是针对我昨天遇到的问题(上传文件过大,导致出现Socket异常)的解决办法。众所周知,tomcat是有默认的文件传输大小限制的(跟android前端),后来跟服务器的哥们协调了一下,他那边改成多少都不管用,这是其一。其二是后来查google得知,tomcat设置服务器的超时时间,后来还是一样,设置成多少都不......
  • [Maven] The JAVA_HOME environment variable is not definded...... 配置错误日志
    ...因为是第一次配置Maven,所以出现了很多错误所以列举一二。出现找不到Java_Home环境变量的时候,如图。这个时候可能是,你的Java_Home路径配置错误,在Java_Home路径中,将\bin删掉,在path后面跟\bin,如%java_home%\bin,而不是直接在java_home中直接写死。......
  • java 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
    通过java程序调用sqlserver数据库,报错驱动程序无法通过使用安全套接字层(SSL)加密与SQLServer建立安全连接。错误:“TheserverselectedprotocolversionTLS10isnotacceptedbyclientpreferences[TLS12]”。ClientConnectionId:9c0c766b-97d5-41c6-884e-1ecbdefbac0......
  • Java实现延迟执行代码
    Java实现延迟执行代码对于Java程序在它们的操作中添加延迟或暂停是比较常见的。这对于任务暂停直到另外任务完成执行场景比较有用。本文我们提供两类方法实现延迟执行。1.基于线程(Thread)方法当Java查询运行时,它在操作系统上产生一个进程,其至少包含一个线程————主线程负责......
  • java参数值传递
    题目: (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径 *一个findAre()方法返回圆的面积。 *  *(2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: *  *publicvoidprintAreas(Circlec,inttime) *在printAreas方法中......
  • java 递归方法 计算1-100之间的所有自然数的和 计算1-100之间所
    packageprectice;/***递归方法的使用**递归方法的定义:一个方法体内调用他自身**①方法递归包含了一种隐式循环,它会重复执行某段代码,但这种重发执行无须循环控制。*②递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似死循环。** 例1:计......