SPI

Posted mike_chang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPI相关的知识,希望对你有一定的参考价值。

SPI

SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。


应用

jdbc、springboot、dubbo、org.springframework:spring-web:xxx jar包下有METE-INF/Services/javax.servlet.ServletContainerInitializer文件


Dobbo SPI

Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。在 Dubbo 中,SPI 是一个非常重要的模块。基于 SPI,我们可以很容易的对 Dubbo 进行拓展。

com.alibaba:dubbo:xxx/META-INF/dubbo.internal目录

com.alibaba.dubbo.common.extension.ExtensionLoader扩展类加载器

RoundRobinLoadBalance extends AbstractLoadBalance,AbstractLoadBalance implements LoadBalance

@SPI("random")
public interface LoadBalance {}

 

以上是关于SPI的主要内容,如果未能解决你的问题,请参考以下文章

Linux——Linux驱动之玩转SPI(上)Linux下SPI驱动框架简析及SPI设备驱动代码框架实现步骤

Linux——Linux驱动之玩转SPI(上)Linux下SPI驱动框架简析及SPI设备驱动代码框架实现步骤

小马哥四轴代码解读-SPI-flash篇

基于硬件 SPI 的数据抽象实例(附代码)

Java的SPI机制示例代码

Linux SPI初始化及接口函数代码细究