SPI概念及使用

本文介绍了Java SPI(Service Provider Interface)的概念,它是Java提供的一种框架扩展机制,允许外部组件自定义和扩展框架功能。文章详细讲解了API与SPI的关系,并阐述了SPI的工作原理,包括在jar包的META-INF/services目录下创建接口文件,以及如何通过ServiceLoader加载实现类。此外,文中还通过JDBC实例展示了两种SPI实现方式:第三方提供实现和应用自身提供实现。
摘要由CSDN通过智能技术生成

概念

API:API(Application Programming Interface)表示应用程序编程接口 
SPI:SPI(Service Provider Interface)表示服务提供商接口 
API与SPI的关系 
框架提供API及其实现,框架在实现过程中提供SPI回调机制。SPI是框架的扩展点。如果使用框架方要扩展框架,可以自己实现SPI并注入框架,于是框架使用方其实也是一个服务提供商。 

spi 是 Java 提供的一套用来被第三方实现或者扩展的 API ,它可以用来启用框架扩展和替换组件。spi 机制是这样的:读取 META-INF/services/ 目录下的元信息,然后 ServiceLoader 根据信息加载对应的类,你可以在自己的代码中使用这个被加载的类。要使用 Java SPI,需要遵循如下约定:

1.当服务提供者提供了接口的一种具体实现后,在 jar 包的 META-INF/services 目录下创建一个以 “接口全限定名” 命名的文件,内容为实现类的全限定名;

2.接口实现类所在的 jar 包放在主程序的 classpath 中;

3.主程序通过 java.util.ServiceLoder 动态装载实现模块,它通过扫描 META-INF/services 目录下的配置文件找到实现类的全限定名,把类加载到 JVM ;

4.SPI 的实现类必须携带一个不带参数的构造方法;

 

SPI实现方式

有两种方式,一种是第三方提供实现,另一种是应用自身自己提供实现。

参考https://b

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值