Browse Source

Clear expression caches on context shutdown

Issue: SPR-12691
pull/723/merge
Stephane Nicoll 10 years ago
parent
commit
6b3092c236
  1. 1
      spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java
  2. 10
      spring-context/src/main/java/org/springframework/cache/interceptor/ExpressionEvaluator.java

1
spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java vendored

@ -288,6 +288,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker @@ -288,6 +288,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker
*/
protected void clearMetadataCache() {
this.metadataCache.clear();
this.evaluator.clear();
}
protected Object execute(CacheOperationInvoker invoker, Object target, Method method, Object[] args) {

10
spring-context/src/main/java/org/springframework/cache/interceptor/ExpressionEvaluator.java vendored

@ -123,6 +123,16 @@ class ExpressionEvaluator extends CachedExpressionEvaluator { @@ -123,6 +123,16 @@ class ExpressionEvaluator extends CachedExpressionEvaluator {
return getExpression(this.unlessCache, methodKey, unlessExpression).getValue(evalContext, boolean.class);
}
/**
* Clear all caches.
*/
void clear() {
this.keyCache.clear();
this.conditionCache.clear();
this.unlessCache.clear();
this.targetMethodCache.clear();
}
private Method getTargetMethod(Class<?> targetClass, Method method) {
AnnotatedElementKey methodKey = new AnnotatedElementKey(method, targetClass);
Method targetMethod = this.targetMethodCache.get(methodKey);

Loading…
Cancel
Save