woody 3 månader sedan
förälder
incheckning
2c691e25a9

+ 27 - 32
framework-common/src/main/java/com/chelvc/framework/common/util/JacksonUtils.java

@@ -54,39 +54,43 @@ import lombok.NonNull;
  */
 public final class JacksonUtils {
     /**
-     * JavaScript最大整型数(2的53次方)
+     * 字符串数组类型引用
      */
-    private static final long JAVA_SCRIPT_MAX_NUMBER = BigInteger.valueOf(2).pow(53).longValue();
+    public static final TypeReference<String[]> STRING_ARRAY_TYPE = new TypeReference<String[]>() {
+    };
 
     /**
-     * JavaScript最大整型数(2的53次方)
+     * 字符串集合类型引用
      */
-    private static final BigInteger JAVA_SCRIPT_MAX_INTEGER = BigInteger.valueOf(JAVA_SCRIPT_MAX_NUMBER);
+    public static final TypeReference<Set<String>> STRING_SET_TYPE = new TypeReference<Set<String>>() {
+    };
 
     /**
-     * JavaScript最大小数(2的53次方)
+     * 字符串列表类型引用
      */
-    private static final BigDecimal JAVA_SCRIPT_MAX_DECIMAL = BigDecimal.valueOf(JAVA_SCRIPT_MAX_NUMBER);
+    public static final TypeReference<List<String>> STRING_LIST_TYPE = new TypeReference<List<String>>() {
+    };
 
     /**
-     * Jackson处理基础模块
+     * 字符串键/值映射类型引用
      */
-    private static volatile SimpleModule BASE_MODULE;
+    public static final TypeReference<Map<String, String>> STRING_MAP_TYPE = new TypeReference<Map<String, String>>() {
+    };
 
     /**
-     * Jackson安全处理模块
+     * JavaScript最大整型数(2的53次方)
      */
-    private static volatile SimpleModule SAFETY_MODULE;
+    private static final long JAVA_SCRIPT_MAX_NUMBER = BigInteger.valueOf(2).pow(53).longValue();
 
     /**
-     * Jackson数字处理模块
+     * JavaScript最大整型数(2的53次方)
      */
-    private static volatile SimpleModule NUMBER_MODULE;
+    private static final BigInteger JAVA_SCRIPT_MAX_INTEGER = BigInteger.valueOf(JAVA_SCRIPT_MAX_NUMBER);
 
     /**
-     * Jackson null对象序列化处理器更新处理实现
+     * JavaScript最大小数(2的53次方)
      */
-    private static volatile BeanSerializerModifier NULL_MODIFIER;
+    private static final BigDecimal JAVA_SCRIPT_MAX_DECIMAL = BigDecimal.valueOf(JAVA_SCRIPT_MAX_NUMBER);
 
     /**
      * 默认对象序列化处理器实例
@@ -99,28 +103,24 @@ public final class JacksonUtils {
     private static final ObjectMapper SAFELY_SERIALIZER = initializeSerializer(true);
 
     /**
-     * 字符串数组类型引用
+     * Jackson处理基础模块
      */
-    public static final TypeReference<String[]> STRING_ARRAY_TYPE = new TypeReference<String[]>() {
-    };
+    private static volatile SimpleModule BASE_MODULE;
 
     /**
-     * 字符串集合类型引用
+     * Jackson安全处理模块
      */
-    public static final TypeReference<Set<String>> STRING_SET_TYPE = new TypeReference<Set<String>>() {
-    };
+    private static volatile SimpleModule SAFETY_MODULE;
 
     /**
-     * 字符串列表类型引用
+     * Jackson数字处理模块
      */
-    public static final TypeReference<List<String>> STRING_LIST_TYPE = new TypeReference<List<String>>() {
-    };
+    private static volatile SimpleModule NUMBER_MODULE;
 
     /**
-     * 字符串键/值映射类型引用
+     * Jackson null对象序列化处理器更新处理实现
      */
-    public static final TypeReference<Map<String, String>> STRING_MAP_TYPE = new TypeReference<Map<String, String>>() {
-    };
+    private static volatile BeanSerializerModifier NULL_MODIFIER;
 
     private JacksonUtils() {
     }
@@ -1229,12 +1229,7 @@ public final class JacksonUtils {
         if (map == null) {
             return null;
         }
-        T instance;
-        try {
-            instance = type.newInstance();
-        } catch (ReflectiveOperationException e) {
-            throw new RuntimeException(e);
-        }
+        T instance = ObjectUtils.instance(type);
         if (ObjectUtils.notEmpty(map)) {
             Map<String, Field> fields = ObjectUtils.getAllFields(type);
             if (ObjectUtils.notEmpty(fields)) {

+ 1 - 6
framework-common/src/main/java/com/chelvc/framework/common/util/ObjectUtils.java

@@ -645,12 +645,7 @@ public final class ObjectUtils {
         if (map == null) {
             return null;
         }
-        T instance;
-        try {
-            instance = type.newInstance();
-        } catch (ReflectiveOperationException e) {
-            throw new RuntimeException(e);
-        }
+        T instance = instance(type);
         if (notEmpty(map)) {
             Map<String, Field> fields = getAllFields(type);
             if (notEmpty(fields)) {

+ 4 - 7
framework-database/src/main/java/com/chelvc/framework/database/context/DatabaseContextHolder.java

@@ -504,13 +504,10 @@ public final class DatabaseContextHolder {
     @SuppressWarnings("unchecked")
     public static <T extends TypeHandler<?>> T initializeTypeHandler(@NonNull Class<T> clazz) {
         T handler = (T) TYPE_HANDLER_MAPPING.get(clazz);
-        return handler != null ? handler : (T) TYPE_HANDLER_MAPPING.computeIfAbsent(clazz, k -> {
-            try {
-                return clazz.newInstance();
-            } catch (ReflectiveOperationException e) {
-                throw new RuntimeException(e);
-            }
-        });
+        if (handler == null) {
+            handler = (T) TYPE_HANDLER_MAPPING.computeIfAbsent(clazz, k -> ObjectUtils.instance(clazz));
+        }
+        return handler;
     }
 
     /**