Regularly purge ResolvableType cache

Update ResolvableType to call `purgeUnreferencedEntries` on the cache
on each get.

Issue: SPR-11394
This commit is contained in:
Phillip Webb 2014-02-18 15:10:48 -08:00
parent 2b4c81e642
commit 319724f0b4
1 changed files with 3 additions and 1 deletions

View File

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