diff --git a/spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java b/spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java index fa84da293d..bfb10f7992 100644 --- a/spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java +++ b/spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java @@ -148,10 +148,10 @@ public abstract class CoroutinesUtils { if (KTypes.isSubtypeOf(returnType, flowType)) { return mono.flatMapMany(CoroutinesUtils::asFlux); } - else if (KTypes.isSubtypeOf(returnType, monoType)) { - return mono.flatMap(o -> ((Mono)o)); - } - else if (KTypes.isSubtypeOf(returnType, publisherType)) { + if (KTypes.isSubtypeOf(returnType, publisherType)) { + if (KTypes.isSubtypeOf(returnType, monoType)) { + return mono.flatMap(o -> ((Mono)o)); + } return mono.flatMapMany(o -> ((Publisher)o)); } return mono;