由于dubbo核心机制之一就是dubbo的spi,但是他是借鉴于jdk-spi。spi的全名为Service Provider Interface,本次我们先来学习jdk的spi是个什么东东。
spi是 JDK 内置的一种服务提供发现机制,目前市面上有很多框架都是用它来做服务的扩展发现,大家耳熟能详的如 JDBC、日志框架都有用到;简单来说,它是一种动态替换发现的机制。举个简单的例子,如果我们定义了一个规范,需要第三方厂商去实现,那么对于我们应用方来说,只需要集成对应厂商的插件,既可以完成对应规范的实现机制。 形成一种插拔式的扩展手段
spi 规范总结
实现 spi ,就需要按照 spi 本身定义的规范来进行配置,SPI规范如下
1. 需要在classpath下创建一个目录,该目录命名必须是:META-INF/services
2. 在该目录下创建一个 properties 文件,该文件需要满足以下几个条件
a) 文件名必须是扩展的接口的全路径名称
b) 文件内部描述的是该扩展接口的所有实现类
c) 文件的编码格式是 UTF-8