fix 修复 EncryptorManager 缓存失效问题导致的内存膨胀
This commit is contained in:
parent
556cf87f0e
commit
c563afed59
@ -17,7 +17,10 @@ import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
|
|||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -34,7 +37,7 @@ public class EncryptorManager {
|
|||||||
/**
|
/**
|
||||||
* 缓存加密器
|
* 缓存加密器
|
||||||
*/
|
*/
|
||||||
Map<EncryptContext, IEncryptor> encryptorMap = new ConcurrentHashMap<>();
|
Map<Integer, IEncryptor> encryptorMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 类加密字段缓存
|
* 类加密字段缓存
|
||||||
@ -67,11 +70,12 @@ public class EncryptorManager {
|
|||||||
* @param encryptContext 加密执行者需要的相关配置参数
|
* @param encryptContext 加密执行者需要的相关配置参数
|
||||||
*/
|
*/
|
||||||
public IEncryptor registAndGetEncryptor(EncryptContext encryptContext) {
|
public IEncryptor registAndGetEncryptor(EncryptContext encryptContext) {
|
||||||
if (encryptorMap.containsKey(encryptContext)) {
|
int key = encryptContext.hashCode();
|
||||||
return encryptorMap.get(encryptContext);
|
if (encryptorMap.containsKey(key)) {
|
||||||
|
return encryptorMap.get(key);
|
||||||
}
|
}
|
||||||
IEncryptor encryptor = ReflectUtil.newInstance(encryptContext.getAlgorithm().getClazz(), encryptContext);
|
IEncryptor encryptor = ReflectUtil.newInstance(encryptContext.getAlgorithm().getClazz(), encryptContext);
|
||||||
encryptorMap.put(encryptContext, encryptor);
|
encryptorMap.put(key, encryptor);
|
||||||
return encryptor;
|
return encryptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +85,7 @@ public class EncryptorManager {
|
|||||||
* @param encryptContext 加密执行者需要的相关配置参数
|
* @param encryptContext 加密执行者需要的相关配置参数
|
||||||
*/
|
*/
|
||||||
public void removeEncryptor(EncryptContext encryptContext) {
|
public void removeEncryptor(EncryptContext encryptContext) {
|
||||||
this.encryptorMap.remove(encryptContext);
|
this.encryptorMap.remove(encryptContext.hashCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user