API的意义,其实就是这些提供给你完成某项功能的类、接口或者方法。
API直接为你提供了功能,你使用API就能完成任务。
SPI是一种回调的思想。
SPI是在一些通用的标准中,为标准的实现产商提供的扩展点。标准在上层提供API,API内部作用了SPI,当API被客户使用时,会动态地从当前运行的classpath中寻找该SPI的实现,然后使用该SPI的实现来完成API的功能。
SPI的实现方目录方式是:提供实现的类打包成jar文件,这个jar文件里必须有META-INF目录,其下又有service目录,其下是一个文本文件,文件名即为SPI接口的全名,文件的内容为该jar包中提供的SPI接口的实现类名。
参考:https://blog.csdn.net/e5945/article/details/24050127