Use computeIfAbsent in SpelCompiler and AdvisedSupport
See gh-26028
This commit is contained in:
parent
178cb429a8
commit
cde476f90e
|
@ -479,14 +479,8 @@ public class AdvisedSupport extends ProxyConfig implements Advised {
|
||||||
* @return a List of MethodInterceptors (may also include InterceptorAndDynamicMethodMatchers)
|
* @return a List of MethodInterceptors (may also include InterceptorAndDynamicMethodMatchers)
|
||||||
*/
|
*/
|
||||||
public List<Object> getInterceptorsAndDynamicInterceptionAdvice(Method method, @Nullable Class<?> targetClass) {
|
public List<Object> getInterceptorsAndDynamicInterceptionAdvice(Method method, @Nullable Class<?> targetClass) {
|
||||||
MethodCacheKey cacheKey = new MethodCacheKey(method);
|
return this.methodCache.computeIfAbsent(new MethodCacheKey(method), k ->
|
||||||
List<Object> cached = this.methodCache.get(cacheKey);
|
this.advisorChainFactory.getInterceptorsAndDynamicInterceptionAdvice(this, method, targetClass));
|
||||||
if (cached == null) {
|
|
||||||
cached = this.advisorChainFactory.getInterceptorsAndDynamicInterceptionAdvice(
|
|
||||||
this, method, targetClass);
|
|
||||||
this.methodCache.put(cacheKey, cached);
|
|
||||||
}
|
|
||||||
return cached;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -233,11 +233,7 @@ public final class SpelCompiler implements Opcodes {
|
||||||
if (compiler == null) {
|
if (compiler == null) {
|
||||||
// Full lock now since we're creating a child ClassLoader
|
// Full lock now since we're creating a child ClassLoader
|
||||||
synchronized (compilers) {
|
synchronized (compilers) {
|
||||||
compiler = compilers.get(clToUse);
|
return compilers.computeIfAbsent(clToUse, SpelCompiler::new);
|
||||||
if (compiler == null) {
|
|
||||||
compiler = new SpelCompiler(clToUse);
|
|
||||||
compilers.put(clToUse, compiler);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return compiler;
|
return compiler;
|
||||||
|
|
Loading…
Reference in New Issue