ControllerAdviceBean accepts bean types without @ControllerAdvice annotation (as in 3.2)
Issue: SPR-13759
This commit is contained in:
@@ -19,6 +19,7 @@ package org.springframework.web.method;
|
|||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -102,13 +103,16 @@ public class ControllerAdviceBean implements Ordered {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ControllerAdvice annotation = AnnotationUtils.findAnnotation(beanType, ControllerAdvice.class);
|
ControllerAdvice annotation = AnnotationUtils.findAnnotation(beanType, ControllerAdvice.class);
|
||||||
if (annotation == null) {
|
if (annotation != null) {
|
||||||
throw new IllegalArgumentException(
|
this.basePackages = initBasePackages(annotation);
|
||||||
"Bean type [" + beanType.getName() + "] is not annotated as @ControllerAdvice");
|
this.assignableTypes = Arrays.asList(annotation.assignableTypes());
|
||||||
|
this.annotations = Arrays.asList(annotation.annotations());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.basePackages = Collections.emptySet();
|
||||||
|
this.assignableTypes = Collections.emptyList();
|
||||||
|
this.annotations = Collections.emptyList();
|
||||||
}
|
}
|
||||||
this.basePackages = initBasePackages(annotation);
|
|
||||||
this.assignableTypes = Arrays.asList(annotation.assignableTypes());
|
|
||||||
this.annotations = Arrays.asList(annotation.annotations());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user