From da90f03f4c7e192a23aaf64680cccf1c51c2b0f5 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 13 Jan 2016 18:12:36 -0500 Subject: [PATCH] Support type-level @ResponeBody (and @RestController) --- .../method/annotation/ResponseBodyResultHandler.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java index 0d9422266f..8018783b35 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java @@ -30,9 +30,11 @@ import java.util.stream.Collectors; import org.reactivestreams.Publisher; import reactor.Mono; +import org.springframework.core.MethodParameter; import org.springframework.core.Ordered; import org.springframework.core.ResolvableType; import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.codec.Encoder; import org.springframework.core.convert.ConversionService; import org.springframework.http.MediaType; @@ -120,8 +122,10 @@ public class ResponseBodyResultHandler implements HandlerResultHandler, Ordered public boolean supports(HandlerResult result) { Object handler = result.getHandler(); if (handler instanceof HandlerMethod) { - Method method = ((HandlerMethod) handler).getMethod(); - return AnnotatedElementUtils.isAnnotated(method, ResponseBody.class.getName()); + MethodParameter returnType = ((HandlerMethod) handler).getReturnType(); + Class containingClass = returnType.getContainingClass(); + return (AnnotationUtils.findAnnotation(containingClass, ResponseBody.class) != null || + returnType.getMethodAnnotation(ResponseBody.class) != null); } return false; }