核心(Hutool-core)工具类(SPI加载工具-ServiceLoaderUtil)

介绍
SPI(Service Provider Interface),是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。

更多介绍见:https://www.jianshu.com/p/3a3edbcd8f24

使用

定义一个接口:

package cn.hutool.test.spi;

public interface SPIService {
void execute();
}
有两个实现:

package cn.hutool.test.spi;

public class SpiImpl1 implements SPIService{
public void execute() {
Console.log("SpiImpl1.execute()");
}
}
package cn.hutool.test.spi;

public class SpiImpl2 implements SPIService{
public void execute() {
Console.log("SpiImpl2.execute()");
}
}
然后在classpath的META-INF/services下创建一个文件,叫cn.hutool.test.spi.SPIService,内容为:

cn.hutool.test.spi.SpiImpl1
cn.hutool.test.spi.SpiImpl2
加载第一个可用服务,如果用户定义了多个接口实现类,只获取第一个不报错的服务。这个方法多用于同一接口多种实现的自动甄别加载, 通过判断jar是否引入,自动找到实现类。

SPIService service = ServiceLoaderUtil.loadFirstAvailable(SPIService.class);
service.execute();

posted @   vello  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示