SPI 扩展
优质
小牛编辑
170浏览
2023-12-01
描述
SPI 的全名为 : Service Provider Interface。
SPI 具体约定
当服务的提供者,提供了服务接口的一种实现之后,在 jar 包的META-INF/services/
目录里同时创建一个以 服务接口 命名的文件。该文件里就是实现该服务接口的具体实现类。而 Jboot 装配这个模块的时候,就能通过该 jar 包 META-INF/services/
里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。
Jboot SPI 模块
在jboot中,以下模块已经实现了SPI机制。
- Jbootrpc
- JbootHttp
- JbootCache
- Jbootmq
- JbootSerializer
例如,在 JbootCache
中,内置了三种实现方案:ehcache
、redis
、ehredis
。在配置文件中,我看可以通过 jboot.cache.type = ehcache
的方式来指定在 Jboot 应用中使用了什么样的缓存方案。
但是,在 Jboot 中,通过SPI机制,我们一样可以扩展出第4、第5甚至更多的缓存方案出来。
扩展步骤如下:
- 1:编写JbootCache的子类
- 2:通过
@JbootSpi
注解给刚刚编写的类设置上一个名字,例如:@JbootSpi("mycache")
- 3:通过在jboot.properties文件中配置上类型为 mycache,配置代码如下:
jboot.cache.type = mycache
通过以上三步,我们就可以完成了对 JbootCache 模块的扩展,其他模块类似。