فهرست منبع

!179 mybatis-plus-core::对spring的GenericTypeResolver做了隔离处理。让别的框架可排除对spring框架的依赖。
Merge pull request !179 from 刘西东/3.0

青苗 3 سال پیش
والد
کامیت
820f40ab79

+ 11 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/GenericTypeHelper.java

@@ -0,0 +1,11 @@
+package com.baomidou.mybatisplus.core.toolkit;
+
+/**
+ * 泛型类助手(用于隔离Spring的代码)
+ *
+ * @author noear
+ * @since 2021-09-03
+ */
+public interface GenericTypeHelper {
+    Class<?>[] resolveTypeArguments(final Class<?> clazz, final Class<?> genericIfc);
+}

+ 16 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/GenericTypeHelperDefault.java

@@ -0,0 +1,16 @@
+package com.baomidou.mybatisplus.core.toolkit;
+
+import org.springframework.core.GenericTypeResolver;
+
+/**
+ * 泛型类助手默认实现
+ *
+ * @author noear
+ * @since 2021-09-03
+ */
+public class GenericTypeHelperDefault implements GenericTypeHelper{
+    @Override
+    public Class<?>[] resolveTypeArguments(Class<?> clazz, Class<?> genericIfc) {
+        return GenericTypeResolver.resolveTypeArguments(clazz, genericIfc);
+    }
+}

+ 29 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/GenericTypeUtils.java

@@ -0,0 +1,29 @@
+package com.baomidou.mybatisplus.core.toolkit;
+
+/**
+ * 泛型类工具(用于隔离Spring的代码)
+ *
+ * @author noear
+ * @since 2021-09-03
+ */
+public class GenericTypeUtils {
+    private static GenericTypeHelper genericTypeHelper;
+
+    /**
+     * 获取泛型工具助手
+     * */
+    public static GenericTypeHelper getGenericTypeHelper() {
+        if(genericTypeHelper == null){
+            genericTypeHelper = new GenericTypeHelperDefault();
+        }
+
+        return genericTypeHelper;
+    }
+
+    /**
+     * 设置泛型工具助手。如果不想使用Spring封装,可以使用前替换掉
+     * */
+    public static void setGenericTypeHelper(GenericTypeHelper genericTypeHelper) {
+        GenericTypeUtils.genericTypeHelper = genericTypeHelper;
+    }
+}

+ 2 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ReflectionKit.java

@@ -15,8 +15,6 @@
  */
 package com.baomidou.mybatisplus.core.toolkit;
 
-import org.springframework.core.GenericTypeResolver;
-
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
@@ -91,7 +89,8 @@ public final class ReflectionKit {
      * @return Class
      */
     public static Class<?> getSuperClassGenericType(final Class<?> clazz, final Class<?> genericIfc, final int index) {
-        Class<?>[] typeArguments = GenericTypeResolver.resolveTypeArguments(ClassUtils.getUserClass(clazz), genericIfc);
+        //update by noear @2021-09-03
+        Class<?>[] typeArguments = GenericTypeUtils.getGenericTypeHelper().resolveTypeArguments(ClassUtils.getUserClass(clazz), genericIfc);
         return null == typeArguments ? null : typeArguments[index];
     }