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 c1a98a81e85..b1fa7539a74 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -488,15 +488,13 @@ public abstract class AnnotationUtils { private static A findAnnotation( AnnotatedElement annotatedElement, Class annotationType, Set visited) { try { - Annotation[] anns = annotatedElement.getDeclaredAnnotations(); - for (Annotation ann : anns) { - if (ann.annotationType() == annotationType) { - return (A) ann; - } + A annotation = annotatedElement.getDeclaredAnnotation(annotationType); + if (annotation != null) { + return annotation; } - for (Annotation ann : anns) { + for (Annotation ann : annotatedElement.getDeclaredAnnotations()) { if (!isInJavaLangAnnotationPackage(ann) && visited.add(ann)) { - A annotation = findAnnotation((AnnotatedElement) ann.annotationType(), annotationType, visited); + annotation = findAnnotation((AnnotatedElement) ann.annotationType(), annotationType, visited); if (annotation != null) { return annotation; } @@ -677,15 +675,13 @@ public abstract class AnnotationUtils { @SuppressWarnings("unchecked") private static A findAnnotation(Class clazz, Class annotationType, Set visited) { try { - Annotation[] anns = clazz.getDeclaredAnnotations(); - for (Annotation ann : anns) { - if (ann.annotationType() == annotationType) { - return (A) ann; - } + A annotation = clazz.getDeclaredAnnotation(annotationType); + if (annotation != null) { + return annotation; } - for (Annotation ann : anns) { + for (Annotation ann : clazz.getDeclaredAnnotations()) { if (!isInJavaLangAnnotationPackage(ann) && visited.add(ann)) { - A annotation = findAnnotation(ann.annotationType(), annotationType, visited); + annotation = findAnnotation(ann.annotationType(), annotationType, visited); if (annotation != null) { return annotation; } @@ -803,16 +799,12 @@ public abstract class AnnotationUtils { Assert.notNull(annotationType, "Annotation type must not be null"); Assert.notNull(clazz, "Class must not be null"); try { - for (Annotation ann : clazz.getDeclaredAnnotations()) { - if (ann.annotationType() == annotationType) { - return true; - } - } + return (clazz.getDeclaredAnnotation(annotationType) != null); } catch (Throwable ex) { handleIntrospectionFailure(clazz, ex); + return false; } - return false; } /**