JAVA SPI(Service Provider Interface)原理、设计及源码解析

背景

团队内部轮流技术分享,其他人都是分享源码,我每次都是设计和架构,感觉自己太特立独行。这次我要合群点,分享点源码。

概念

Service Provider Interface:服务提供方接口。是一种JVM层面的服务注册发现机制。

谁在用

jdbc源码里我见过SPI、Dubbo源码里我见过SPI、Eleasticsearch源码里我见过SPI……在基础服务中使用占比很高。

怎么判断有没有用

JAVA SPI(Service Provider Interface)原理、设计及源码解析_第1张图片

如上图,META-INF/services下面能看到长的很像类的完全限定名,就八九不离十了。

怎么用

JAVA SPI(Service Provider Interface)原理、设计及源码解析_第2张图片

服务注册发现机制一个简陋的实现就是找到一个满足需求的服务就返回。如果调用第一个服务出了异常崩溃了,就接着查找下一个。SPI最简单使用也是如此。

1>定义一个服务端

step1:实现服务接口

step2:在META

你可能感兴趣的:(程序员,程序员,Java,后端,互联网,架构师)