From 1f57bff2c0b2c3944374be7355a48b0b8ee0be74 Mon Sep 17 00:00:00 2001 From: hzd <2065413046@qq.com> Date: Thu, 3 Sep 2020 15:49:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0spi=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=BD=AC=E6=8D=A2=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/convert/ConverterRegistry.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java index 5b6d2c700..c0193ac4c 100644 --- a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java @@ -32,8 +32,10 @@ import cn.hutool.core.convert.impl.URLConverter; import cn.hutool.core.convert.impl.UUIDConverter; import cn.hutool.core.date.DateTime; import cn.hutool.core.lang.TypeReference; +import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.ServiceLoaderUtil; import cn.hutool.core.util.TypeUtil; import java.io.Serializable; @@ -59,9 +61,11 @@ import java.time.temporal.TemporalAccessor; import java.util.Calendar; import java.util.Collection; import java.util.Currency; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Optional; +import java.util.ServiceLoader; import java.util.TimeZone; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -107,6 +111,22 @@ public class ConverterRegistry implements Serializable{ public ConverterRegistry() { defaultConverter(); + putCustomBySpi(); + + + } + + @SuppressWarnings("rawtypes") + private void putCustomBySpi() { + List list = ServiceLoaderUtil.loadList(Converter.class); + list.forEach(converter->{ + try { + Type type = TypeUtil.getTypeArgument(ClassUtil.getClass(converter)); + putCustom(type, converter); + } catch (Exception e) { + // 忽略注册失败的 + } + }); } /**