【java】——api与spi的区别与关系

APi,大家都很熟悉,比如java的api文档,就描述的是jdk为我们开发人员准备了那些可以直接使用的方法,以供开发人员直接使用,从而达到某种功能的实现,比如我们需要得到对象的Hash值,那么可以直接调用Object.hashCode()方法就可以获取该对象对应的hash值了。API可以简单的理解为服务方暴露自己的服务供客户方调用,这里服务方就是JDK,客户方就是java开发人员

SPI,服务方提供的不在提供具体的方法,而是提供对象的接口,客户方需要实现接口,然后服务方调用客户方的接口实现类,再来实现客户的某种功能。SPI一般是给框架开发人员使用的,是一种实现功能的规范,接口也就是为了定义实现某种功能的规范,因此可以安装这个规范来实现很多种不能的实现类,比如java定义了链接数据库的接口【java.sql.Driver】,我们需要实现接口,但是数据库开发商如mysql或者oracle都开发了对应的驱动包,来链接自己的数据库,这些驱动包都实现了java定义的这个接口,实现的功能都是链接数据库,但是mysql的驱动包链接的是mysql,oracle驱动包链接的是oracle,这样我们需要链接mysql就依赖mysql的驱动包,我们需要链接orcale就用oracle的驱动包。SPI流程就是提供接口,实现接口,当客户需要实现某种功能的时候,服务方调用客户方的接口实现类来完成某种功能。比如mysql的驱动(接口实现类)就是SPI服务,当java开发人员需要链接mysql的时候,服务方调用的是mysql开发人员开发的驱动(接口实现类),来为java开发人员实现mysql的链接功能。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值