diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/PatternsRequestCondition.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/PatternsRequestCondition.java index d078ef66214..c7e4a8d1050 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/PatternsRequestCondition.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/PatternsRequestCondition.java @@ -157,12 +157,15 @@ public final class PatternsRequestCondition extends AbstractRequestCondition matches = getMatchingPatterns(exchange); + PathContainer lookupPath = exchange.getRequest().getPath().pathWithinApplication(); + if (this.patterns.size() == 1) { + return (this.patterns.first().matches(lookupPath) ? this : null); + } + SortedSet matches = getMatchingPatterns(lookupPath); return (matches != null ? new PatternsRequestCondition(matches) : null); } - private @Nullable SortedSet getMatchingPatterns(ServerWebExchange exchange) { - PathContainer lookupPath = exchange.getRequest().getPath().pathWithinApplication(); + private @Nullable SortedSet getMatchingPatterns(PathContainer lookupPath) { TreeSet result = null; for (PathPattern pattern : this.patterns) { if (pattern.matches(lookupPath)) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/PathPatternsRequestCondition.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/PathPatternsRequestCondition.java index 0fc35256b49..0a60fede8ef 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/PathPatternsRequestCondition.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/PathPatternsRequestCondition.java @@ -189,6 +189,9 @@ public final class PathPatternsRequestCondition extends AbstractRequestCondition @Override public @Nullable PathPatternsRequestCondition getMatchingCondition(HttpServletRequest request) { PathContainer path = ServletRequestPathUtils.getParsedRequestPath(request).pathWithinApplication(); + if (this.patterns.size() == 1) { + return (this.patterns.first().matches(path) ? this : null); + } SortedSet matches = getMatchingPatterns(path); return (matches != null ? new PathPatternsRequestCondition(matches) : null); }