diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractExceptionHandlerMethodResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractExceptionHandlerMethodResolver.java index 97c89b8fd6..e4e6b6632a 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractExceptionHandlerMethodResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractExceptionHandlerMethodResolver.java @@ -34,6 +34,7 @@ import org.springframework.util.ConcurrentReferenceHashMap; * * @author Rossen Stoyanchev * @author Juergen Hoeller + * @author Sam Brannen * @since 4.0 */ public abstract class AbstractExceptionHandlerMethodResolver { @@ -138,7 +139,9 @@ public abstract class AbstractExceptionHandlerMethodResolver { } } if (!matches.isEmpty()) { - matches.sort(new ExceptionDepthComparator(exceptionType)); + if (matches.size() > 1) { + matches.sort(new ExceptionDepthComparator(exceptionType)); + } return this.mappedMethods.get(matches.get(0)); } else { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/ExceptionHandlerMethodResolver.java b/spring-web/src/main/java/org/springframework/web/method/annotation/ExceptionHandlerMethodResolver.java index 697092bc3a..3d5995ceae 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/ExceptionHandlerMethodResolver.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/ExceptionHandlerMethodResolver.java @@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; * * @author Rossen Stoyanchev * @author Juergen Hoeller + * @author Sam Brannen * @since 3.1 */ public class ExceptionHandlerMethodResolver { @@ -179,7 +180,9 @@ public class ExceptionHandlerMethodResolver { } } if (!matches.isEmpty()) { - matches.sort(new ExceptionDepthComparator(exceptionType)); + if (matches.size() > 1) { + matches.sort(new ExceptionDepthComparator(exceptionType)); + } return this.mappedMethods.get(matches.get(0)); } else {