Java 中的 SPI

在开发过程中,一直听到是API,API 全称是Application Programming Interface,主要是实现方来制定接口并完成对接口的不同实现,调用方仅仅依赖却无权选择不同实现。对于 SPI 来说,估计很多人就不是很清楚了。下面就整理一下 SPI 的相关知识。

什么是 SPI

SPI全称是 Service Provider Interface,调用方来制定接口,实现方来针对接口实现不同的实现。调用方来选择自己需要的实现。

SPI 的应用场景

SPI 主要适用于:调用者根据实际使用需要,启用、扩展或者替换框架的实现策略。
具体的例子如下:

数据库驱动加载接口实现类的加载

  • JDBC 加载不同类型数据库的驱动
  • 日志门面接口实现类加载
  • SLG4J 加载不同提供商日志类的实现

Spring

  • Spring 中大量使用了 SPI,比如:对 Servlet3.0 规范对 ServletContainerInitializer 的实现,自动转换类型

Dubbo 等框架

SPI 的实现原理

原理摘抄于 Hollis 的知识星球




附上一个感觉比较好的总结:

说点什么

avatar
  Subscribe  
提醒

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部