This commit is contained in:
Michael Yang 2025-01-10 13:07:39 +08:00
parent e5db83710c
commit de8f3865c4
3 changed files with 10 additions and 7 deletions

View File

@ -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;

View File

@ -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;

View File

@ -58,7 +58,7 @@ public class LambdaUtil {
public static <T> Class<?> getImplClass(LambdaGetter<T> 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 <T> QueryColumn getQueryColumn(LambdaGetter<T> 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);