Class SPIKit

java.lang.Object
org.miaixz.bus.core.xyz.SPIKit

public class SPIKit extends Object
服务提供接口SPI(Service Provider interface)相关类 SPI机制中的服务加载工具类,流程如下
     1、创建接口,并创建实现类
     2、ClassPath/META-INF/services下创建与接口全限定类名相同的文件
     3、文件内容填写实现类的全限定类名
 
相关介绍见:https://www.jianshu.com/p/3a3edbcd8f24
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • SPIKit

      public SPIKit()
  • Method Details

    • loadFirstAvailable

      public static <S> S loadFirstAvailable(Class<S> clazz)
      加载第一个可用服务,如果用户定义了多个接口实现类,只获取第一个不报错的服务
      Type Parameters:
      S - 服务类型
      Parameters:
      clazz - 服务接口
      Returns:
      第一个服务接口实现对象,无实现返回null
    • loadFirstAvailable

      public static <S> S loadFirstAvailable(ServiceLoader<S> serviceLoader)
      加载第一个可用服务,如果用户定义了多个接口实现类,只获取第一个不报错的服务
      Type Parameters:
      S - 服务类型
      Parameters:
      serviceLoader - ServiceLoader
      Returns:
      第一个服务接口实现对象,无实现返回null
    • loadList

      public static <T> ServiceLoader<T> loadList(Class<T> clazz)
      加载服务
      Type Parameters:
      T - 接口类型
      Parameters:
      clazz - 服务接口
      Returns:
      服务接口实现列表
    • loadList

      public static <T> ServiceLoader<T> loadList(Class<T> clazz, ClassLoader loader)
      加载服务
      Type Parameters:
      T - 接口类型
      Parameters:
      clazz - 服务接口
      loader - ClassLoader
      Returns:
      服务接口实现列表