@ -20,6 +20,8 @@ import java.io.IOException;
@@ -20,6 +20,8 @@ import java.io.IOException;
import java.lang.reflect.Type ;
import java.net.URI ;
import java.util.List ;
import java.util.Map ;
import java.util.concurrent.ConcurrentHashMap ;
import org.jspecify.annotations.Nullable ;
@ -67,6 +69,9 @@ import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolv
@@ -67,6 +69,9 @@ import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolv
* /
public class RequestResponseBodyMethodProcessor extends AbstractMessageConverterMethodProcessor {
private final Map < Class < ? > , Boolean > responseBodyControllerCache = new ConcurrentHashMap < > ( ) ;
/ * *
* Basic constructor with converters only . Suitable for resolving
* { @code @RequestBody } . For handling { @code @ResponseBody } consider also
@ -132,7 +137,8 @@ public class RequestResponseBodyMethodProcessor extends AbstractMessageConverter
@@ -132,7 +137,8 @@ public class RequestResponseBodyMethodProcessor extends AbstractMessageConverter
@Override
public boolean supportsReturnType ( MethodParameter returnType ) {
return ( AnnotatedElementUtils . hasAnnotation ( returnType . getContainingClass ( ) , ResponseBody . class ) | |
return ( this . responseBodyControllerCache . computeIfAbsent ( returnType . getContainingClass ( ) ,
clazz - > AnnotatedElementUtils . hasAnnotation ( clazz , ResponseBody . class ) ) | |
returnType . hasMethodAnnotation ( ResponseBody . class ) ) ;
}