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;
}
/**