Add shortcuts for elements with no annotations

Improve the performance of the `getMergedAnnotationAttributes` and
`isAnnotated` methods in `AnnotatedElementUtils` by returning
immediately when the element had no annotations.

Issue: SPR-13621
master
Phillip Webb 9 years ago
parent ce64761069
commit 1733d0111d
  1. 6
      spring-core/src/main/java/org/springframework/core/annotation/AnnotatedElementUtils.java

@ -201,6 +201,9 @@ public class AnnotatedElementUtils {
Assert.notNull(element, "AnnotatedElement must not be null"); Assert.notNull(element, "AnnotatedElement must not be null");
Assert.hasLength(annotationName, "annotationName must not be null or empty"); Assert.hasLength(annotationName, "annotationName must not be null or empty");
if (element.getAnnotations().length == 0) {
return false;
}
return Boolean.TRUE.equals(searchWithGetSemantics(element, annotationName, new SimpleAnnotationProcessor<Boolean>() { return Boolean.TRUE.equals(searchWithGetSemantics(element, annotationName, new SimpleAnnotationProcessor<Boolean>() {
@Override @Override
public Boolean process(AnnotatedElement annotatedElement, Annotation annotation, int metaDepth) { public Boolean process(AnnotatedElement annotatedElement, Annotation annotation, int metaDepth) {
@ -331,6 +334,9 @@ public class AnnotatedElementUtils {
public static AnnotationAttributes getMergedAnnotationAttributes(AnnotatedElement element, String annotationName, public static AnnotationAttributes getMergedAnnotationAttributes(AnnotatedElement element, String annotationName,
boolean classValuesAsString, boolean nestedAnnotationsAsMap) { boolean classValuesAsString, boolean nestedAnnotationsAsMap) {
if (element.getAnnotations().length == 0) {
return null;
}
AnnotationAttributes attributes = searchWithGetSemantics(element, annotationName, AnnotationAttributes attributes = searchWithGetSemantics(element, annotationName,
new MergedAnnotationAttributesProcessor(annotationName, classValuesAsString, nestedAnnotationsAsMap)); new MergedAnnotationAttributesProcessor(annotationName, classValuesAsString, nestedAnnotationsAsMap));
AnnotationUtils.postProcessAnnotationAttributes(element, attributes, classValuesAsString, nestedAnnotationsAsMap); AnnotationUtils.postProcessAnnotationAttributes(element, attributes, classValuesAsString, nestedAnnotationsAsMap);

Loading…
Cancel
Save