Class ListServiceLoader<S>

java.lang.Object
org.miaixz.bus.core.lang.loader.spi.AbstractServiceLoader<S>
org.miaixz.bus.core.lang.loader.spi.ListServiceLoader<S>
Type Parameters:
S - 服务类型
All Implemented Interfaces:
Iterable<S>, ServiceLoader<S>

public class ListServiceLoader<S> extends AbstractServiceLoader<S>
列表类型的服务加载器,用于替换JDK提供的ServiceLoader 相比JDK,增加了:
  • 可选服务存储位置(默认位于META-INF/services/)。
  • 可自定义编码。
  • 可自定义加载指定的服务实例。
  • 可自定义加载指定的服务类,由用户决定如何实例化(如传入自定义构造参数等)。
  • 提供更加灵活的服务加载机制,当选择加载指定服务时,其它服务无需加载。

服务文件默认位于"META-INF/services/"下,文件名为服务接口类全名。内容类似于:

     # 我是注释
     service.Service1
     service.Service2
 
通过调用getService(int)方法,传入序号,即可获取对应服务。
Since:
Java 17+
Author:
Kimi Liu