提交 319724f0 编写于 作者: P Phillip Webb

Regularly purge ResolvableType cache

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

Issue: SPR-11394
上级 2b4c81e6
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册