归档
SPI 源码说明
java.util.ServiceLoader
/*** 服务加载器:给定接口,查找实现类。实现可迭代接口 */
public final class ServiceLoader<S> implements Iterable<S> {
/*** 返回 ServiceLoader 实例 */
public static <S> ServiceLoader<S> load(Class<S> service, ClassLoader loader) {
return new ServiceLoader<>(service, loader);
}
/*** 构造器 */
private ServiceLoader(Class<S> svc, ClassLoader cl) {
// 记录要查找的接口类
service = Objects.requireNonNull(svc, "Service interface cannot be null");
// 记录加载器
loader = (cl == null) ? ClassLoader.getSystemClassLoader