diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/DataSourceBuilder.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/DataSourceBuilder.java index 5c3f2d89..86f7e999 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/DataSourceBuilder.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/DataSourceBuilder.java @@ -65,7 +65,8 @@ public class DataSourceBuilder { } try { - Class dataSourceClass = Class.forName(dataSourceClassName); + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + Class dataSourceClass = Class.forName(dataSourceClassName, false, contextClassLoader); Object dataSourceObject = dataSourceClass.newInstance(); setDataSourceProperties(dataSourceObject); return (DataSource) dataSourceObject; @@ -132,8 +133,9 @@ public class DataSourceBuilder { private String doDetectDataSourceClass(String className) { + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); try { - Class.forName(className); + Class.forName(className, false, contextClassLoader); return className; } catch (ClassNotFoundException e) { return null; diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexConfiguration.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexConfiguration.java index a4495b27..31dd4a84 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexConfiguration.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexConfiguration.java @@ -320,9 +320,10 @@ public class FlexConfiguration extends Configuration { private TableInfo getTableInfo(MappedStatement ms) { + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); String mapperClassName = ms.getId().substring(0, ms.getId().lastIndexOf(".")); try { - Class mapperClass = Class.forName(mapperClassName); + Class mapperClass = Class.forName(mapperClassName, true, contextClassLoader); return TableInfoFactory.ofMapperClass(mapperClass); } catch (ClassNotFoundException e) { return null; diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/LambdaUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/LambdaUtil.java index 2dbe426c..38005819 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/LambdaUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/LambdaUtil.java @@ -58,7 +58,7 @@ public class LambdaUtil { public static Class getImplClass(LambdaGetter getter) { return MapUtil.computeIfAbsent(implClassMap, getter.getClass(), aClass -> { SerializedLambda lambda = getSerializedLambda(getter); - return getImplClass(lambda, getter.getClass().getClassLoader()); + return getImplClass0(lambda); }); } @@ -75,9 +75,8 @@ public class LambdaUtil { public static QueryColumn getQueryColumn(LambdaGetter getter) { return MapUtil.computeIfAbsent(queryColumnMap, getter.getClass(), aClass -> { - ClassLoader classLoader = getter.getClass().getClassLoader(); SerializedLambda lambda = getSerializedLambda(getter); - Class entityClass = getImplClass(lambda, classLoader); + Class entityClass = getImplClass0(lambda); TableInfo tableInfo = TableInfoFactory.ofEntityClass(entityClass); String propertyName = getFieldName(getter); return tableInfo.getQueryColumnByProperty(propertyName); @@ -96,7 +95,8 @@ public class LambdaUtil { } - private static Class getImplClass(SerializedLambda lambda, ClassLoader classLoader) { + private static Class getImplClass0(SerializedLambda lambda) { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); String implClass = getImplClassName(lambda); try { return Class.forName(implClass.replace("/", "."), true, classLoader);