diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java index 88cefdbab6f..2acdf0b380f 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java @@ -583,11 +583,12 @@ public abstract class AnnotationUtils { } if (result != null) { + result = synthesizeAnnotation(result, method); findAnnotationCache.put(cacheKey, result); } } - return synthesizeAnnotation(result, method); + return result; } private static A searchOnInterfaces(Method method, Class annotationType, Class... ifcs) { @@ -672,11 +673,12 @@ public abstract class AnnotationUtils { A result = (A) findAnnotationCache.get(cacheKey); if (result == null) { result = findAnnotation(clazz, annotationType, new HashSet()); - if (result != null) { + if (result != null && synthesize) { + result = synthesizeAnnotation(result, clazz); findAnnotationCache.put(cacheKey, result); } } - return (synthesize ? synthesizeAnnotation(result, clazz) : result); + return result; } /**