diff --git a/CHANGELOG.md b/CHANGELOG.md index 23ce0686d..a73c65485 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * 【core 】 增加ValueListHandler,优化结果集获取方式 * 【http 】 支持patch方法(issue#666@Github) * 【crypto】 BCUtil支持更加灵活的密钥类型,增加writePemObject方法 +* 【core 】 增加ServiceLoaderUtil ### Bug修复 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 new file mode 100644 index 000000000..fdc57da56 --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java @@ -0,0 +1,58 @@ +package cn.hutool.core.util; + +import java.util.Iterator; +import java.util.ServiceLoader; + +/** + * SPI机制中的服务加载工具类,流程如下 + * + *
+ * 1、创建接口,并创建实现类 + * 2、ClassPath/META-INF/services下创建与接口全限定类名相同的文件 + * 3、文件内容填写实现类的全限定类名 + *+ * 相关介绍见:https://www.jianshu.com/p/3a3edbcd8f24 + * + * @author looly + * @since 5.1.6 + */ +public class ServiceLoaderUtil { + + /** + * 加载第一个服务,如果用户定义了多个接口实现类,只获取第一个。 + * + * @param