Regularly purge ResolvableType cache
Update ResolvableType to call `purgeUnreferencedEntries` on the cache on each get. Issue: SPR-11394
This commit is contained in:
parent
2b4c81e642
commit
319724f0b4
|
|
@ -36,6 +36,7 @@ import org.springframework.core.SerializableTypeWrapper.TypeProvider;
|
|||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.ConcurrentReferenceHashMap;
|
||||
import org.springframework.util.ConcurrentReferenceHashMap.ReferenceType;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
|
|
@ -1129,11 +1130,12 @@ public final class ResolvableType implements Serializable {
|
|||
return NONE;
|
||||
}
|
||||
// Check the cache, we may have a ResolvableType that may have already been resolved
|
||||
cache.purgeUnreferencedEntries();
|
||||
ResolvableType key = new ResolvableType(type, typeProvider, variableResolver);
|
||||
ResolvableType resolvableType = cache.get(key);
|
||||
if (resolvableType == null) {
|
||||
resolvableType = new ResolvableType(type, typeProvider, variableResolver, null);
|
||||
cache.put(key, resolvableType);
|
||||
cache.put(resolvableType, resolvableType);
|
||||
}
|
||||
return resolvableType;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue