Service Provider Interface (SPI)Application Programming Interface (API)有什么区别?

更具体地说,对于Java库,是什么让它们成为API和/或SPI?

推荐答案

  • API是对类/接口/方法/.你要call and use美元才能实现一个目标,而且
  • SPI是对类/接口/方法/.你要extend and implement美元才能实现一个目标.

换句话说,API告诉您特定的类/方法为您做了什么,SPI告诉您必须做什么才能符合.

通常API和SPI是分开的.例如,在JDBC中,the Driver class是SPI的一部分:如果您只是想使用JDBC,您不需要直接使用它,但是每个实现JDBC驱动程序的人都必须实现该类.

然而,有时它们会重叠.The Connection interfaceboth SPI和API:当您使用JDBC驱动程序时,您经常使用它,它需要由JDBC驱动程序的开发人员实现.

Java相关问答推荐

基于仅存在于父级中的字段查询子文档?

无法在WebSocket onMessage中捕获错误

Chunk(Int)已弃用并标记为要删除

测试期间未执行开放重写方法

在Spring终结点中,是否可以同时以大写和小写形式指定枚举常量?

JDK 21-为什么线程局部随机S nextInt不直接用Super.nextInt实现?

有没有更快的方法在N个容器中删除重复项?

SonarLint:只能有条件地调用方法(S)

如何使用路径过渡方法使 node 绕圆旋转?

使用Class.this.field=Value初始化构造函数中的最后一个字段会产生错误,而使用this.field=Value则不会

错误:不兼容的类型:Double不能转换为Float

Spring Framework6.1中引入的新RestClient是否有适合于测试的变体,就像RestTemplate和TestRestTemplate一样?

在Oracle中调用输出参数在索引处缺少IN或OUT参数的函数

用于Java的Visual Studio代码完成不起作用

在Java中比较同一多维数组的两个不同的字符串元素

基于距离的APACHE POI公式判断

多线程、并发和睡眠未按预期工作

JOOQ:批处理CRUD操作使用动态表定义,如何?

URI构造函数错误?

java.exe如何执行java源代码?