面试准备

64 阅读1分钟

API vs SPI

参考 juejin.cn/post/684490… SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制.

image.png

  1. 接口的定义和实现都在服务方的时候,仅暴露出接口给调用方使用的时候,我们称为API
  2. 接口的定义在调用方的时候(实现在服务方),我们给它也取个名字SPI

SPI的使用场景

  1. MySql驱动的选择driverManager根据配置来确定要使用的驱动
  2. dubbo框架中的扩展机制

META-INF/services定义好要实现的接口(文件名)和实现类(文件内容), ServiceLoader加载的时候没有实例化实现类,而是在Iterator遍历的时候去用反射创建了实例.