From 0bef8a32335eb431f38786626510bd71293bb4a7 Mon Sep 17 00:00:00 2001 From: hzd <2065413046@qq.com> Date: Thu, 3 Sep 2020 14:10:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0spi=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E8=BF=94=E5=9B=9E=E6=9C=AAlist=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/core/util/ServiceLoaderUtil.java | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java index 21086f5f9..4fd3360bb 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java @@ -1,6 +1,8 @@ package cn.hutool.core.util; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.ServiceConfigurationError; import java.util.ServiceLoader; @@ -61,7 +63,7 @@ public class ServiceLoaderUtil { * @return 服务接口实现列表 */ public static ServiceLoader load(Class clazz) { - return ServiceLoader.load(clazz); + return load(clazz,null); } /** @@ -73,6 +75,37 @@ public class ServiceLoaderUtil { * @return 服务接口实现列表 */ public static ServiceLoader load(Class clazz, ClassLoader loader) { + if(loader==null) { + loader = Thread.currentThread().getContextClassLoader(); + } return ServiceLoader.load(clazz, loader); } + /** + * 加载服务 并已list列表返回 + * @param 接口类型 + * @param clazz 服务接口 + * @return 服务接口实现列表 + */ + public static List loadList(Class clazz){ + return loadList(clazz); + } + /** + * 加载服务 并已list列表返回 + * @param 接口类型 + * @param clazz 服务接口 + * @param loader {@link ClassLoader} + * @return 服务接口实现列表 + */ + public static List loadList(Class clazz, ClassLoader loader){ + final Iterator iterator = load(clazz).iterator(); + List list=new ArrayList<>(); + while(iterator.hasNext()){ + try { + list.add(iterator.next()); + } catch (ServiceConfigurationError e) { + // ignore + } + } + return list; + } }