From d64ac32e3d9538759cb1e267867fb7e5c2303922 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 4 Dec 2015 13:03:00 +0100 Subject: [PATCH] ControllerAdviceBean accepts bean types without @ControllerAdvice annotation (as in 3.2) Issue: SPR-13759 --- .../web/method/ControllerAdviceBean.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java b/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java index 91f868987b..0f8579520b 100644 --- a/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java +++ b/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java @@ -19,6 +19,7 @@ package org.springframework.web.method; import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -102,13 +103,16 @@ public class ControllerAdviceBean implements Ordered { } ControllerAdvice annotation = AnnotationUtils.findAnnotation(beanType, ControllerAdvice.class); - if (annotation == null) { - throw new IllegalArgumentException( - "Bean type [" + beanType.getName() + "] is not annotated as @ControllerAdvice"); + if (annotation != null) { + this.basePackages = initBasePackages(annotation); + 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()); }