mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
去除ClassloaderUtil的Cache
This commit is contained in:
parent
4b2ec7d7a5
commit
ecc4cd64eb
@ -3,12 +3,13 @@
|
|||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
# 5.8.10.M1 (2022-11-03)
|
# 5.8.10.M1 (2022-11-08)
|
||||||
|
|
||||||
### 🐣新特性
|
### 🐣新特性
|
||||||
* 【http 】 HttpResponse增加getFileNameFromDisposition方法(pr#2676@Github)
|
* 【http 】 HttpResponse增加getFileNameFromDisposition方法(pr#2676@Github)
|
||||||
* 【core 】 FileUtil.copy,当来源为文件时,返回文件而非目录(issue#I5YCVL@Gitee)
|
* 【core 】 FileUtil.copy,当来源为文件时,返回文件而非目录(issue#I5YCVL@Gitee)
|
||||||
* 【db 】 DialectFactory增加identifyDriver重载(issue#I5YWI6@Gitee)
|
* 【db 】 DialectFactory增加identifyDriver重载(issue#I5YWI6@Gitee)
|
||||||
|
* 【core 】 去除ClassloaderUtil的Cache(issue#I5YWI6@Gitee)
|
||||||
|
|
||||||
### 🐞Bug修复
|
### 🐞Bug修复
|
||||||
* 【db 】 修复分页时order by截断问题(issue#I5X6FM@Gitee)
|
* 【db 】 修复分页时order by截断问题(issue#I5X6FM@Gitee)
|
||||||
|
@ -4,9 +4,7 @@ import cn.hutool.core.convert.BasicType;
|
|||||||
import cn.hutool.core.exceptions.UtilException;
|
import cn.hutool.core.exceptions.UtilException;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.lang.JarClassLoader;
|
import cn.hutool.core.lang.JarClassLoader;
|
||||||
import cn.hutool.core.lang.Pair;
|
|
||||||
import cn.hutool.core.map.SafeConcurrentHashMap;
|
import cn.hutool.core.map.SafeConcurrentHashMap;
|
||||||
import cn.hutool.core.map.WeakConcurrentMap;
|
|
||||||
import cn.hutool.core.text.CharPool;
|
import cn.hutool.core.text.CharPool;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -50,10 +48,9 @@ public class ClassLoaderUtil {
|
|||||||
* 原始类型名和其class对应表,例如:int =》 int.class
|
* 原始类型名和其class对应表,例如:int =》 int.class
|
||||||
*/
|
*/
|
||||||
private static final Map<String, Class<?>> PRIMITIVE_TYPE_NAME_MAP = new SafeConcurrentHashMap<>(32);
|
private static final Map<String, Class<?>> PRIMITIVE_TYPE_NAME_MAP = new SafeConcurrentHashMap<>(32);
|
||||||
private static final Map<Pair<String, ClassLoader>, Class<?>> CLASS_CACHE = new WeakConcurrentMap<>();
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
List<Class<?>> primitiveTypes = new ArrayList<>(32);
|
final List<Class<?>> primitiveTypes = new ArrayList<>(32);
|
||||||
// 加入原始类型
|
// 加入原始类型
|
||||||
primitiveTypes.addAll(BasicType.PRIMITIVE_WRAPPER_MAP.keySet());
|
primitiveTypes.addAll(BasicType.PRIMITIVE_WRAPPER_MAP.keySet());
|
||||||
// 加入原始类型数组类型
|
// 加入原始类型数组类型
|
||||||
@ -66,7 +63,7 @@ public class ClassLoaderUtil {
|
|||||||
primitiveTypes.add(long[].class);
|
primitiveTypes.add(long[].class);
|
||||||
primitiveTypes.add(short[].class);
|
primitiveTypes.add(short[].class);
|
||||||
primitiveTypes.add(void.class);
|
primitiveTypes.add(void.class);
|
||||||
for (Class<?> primitiveType : primitiveTypes) {
|
for (final Class<?> primitiveType : primitiveTypes) {
|
||||||
PRIMITIVE_TYPE_NAME_MAP.put(primitiveType.getName(), primitiveType);
|
PRIMITIVE_TYPE_NAME_MAP.put(primitiveType.getName(), primitiveType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -197,9 +194,7 @@ public class ClassLoaderUtil {
|
|||||||
// 加载原始类型和缓存中的类
|
// 加载原始类型和缓存中的类
|
||||||
Class<?> clazz = loadPrimitiveClass(name);
|
Class<?> clazz = loadPrimitiveClass(name);
|
||||||
if (clazz == null) {
|
if (clazz == null) {
|
||||||
final String finalName = name;
|
clazz = doLoadClass(name, classLoader, isInitialized);
|
||||||
final ClassLoader finalClassLoader = classLoader;
|
|
||||||
clazz = CLASS_CACHE.computeIfAbsent(Pair.of(name, classLoader), (key)-> doLoadClass(finalName, finalClassLoader, isInitialized));
|
|
||||||
}
|
}
|
||||||
return clazz;
|
return clazz;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user