Class ResponseBodyEmitterReturnValueHandler
java.lang.Object
org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler
- All Implemented Interfaces:
HandlerMethodReturnValueHandler
public class ResponseBodyEmitterReturnValueHandler
extends Object
implements HandlerMethodReturnValueHandler
Handler for return values of type:
ResponseBodyEmitter
including sub-classSseEmitter
and others.- Reactive return types known to
ReactiveAdapterRegistry
. - Any of the above wrapped with
ResponseEntity
.
Single-value reactive types are adapted to DeferredResult
.
Multi-value reactive types are adapted to ResponseBodyEmitter
or
SseEmitter
as follows:
- SSE stream, if the element type is
ServerSentEvent
or if negotiated by content type. - Text stream for a
Publisher
ofCharSequence
. - A JSON stream if negotiated by content type to
MediaType.APPLICATION_NDJSON
.
- Since:
- 4.2
- Author:
- Rossen Stoyanchev
-
Constructor Summary
ConstructorsConstructorDescriptionResponseBodyEmitterReturnValueHandler
(List<HttpMessageConverter<?>> messageConverters) Simple constructor with reactive type support based on a default instance ofReactiveAdapterRegistry
,SyncTaskExecutor
, andContentNegotiationManager
with an Accept header strategy.ResponseBodyEmitterReturnValueHandler
(List<HttpMessageConverter<?>> messageConverters, ReactiveAdapterRegistry registry, TaskExecutor executor, ContentNegotiationManager manager) Constructor that with added arguments to customize "reactive" type support.ResponseBodyEmitterReturnValueHandler
(List<HttpMessageConverter<?>> messageConverters, ReactiveAdapterRegistry registry, TaskExecutor executor, ContentNegotiationManager manager, List<ViewResolver> viewResolvers, LocaleResolver localeResolver) Constructor that with added arguments for view rendering. -
Method Summary
Modifier and TypeMethodDescriptionvoid
handleReturnValue
(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) Handle the given return value by adding attributes to the model and setting a view or setting theModelAndViewContainer.setRequestHandled(boolean)
flag totrue
to indicate the response has been handled directly.boolean
supportsReturnType
(MethodParameter returnType) Whether the given method return type is supported by this handler.
-
Constructor Details
-
ResponseBodyEmitterReturnValueHandler
Simple constructor with reactive type support based on a default instance ofReactiveAdapterRegistry
,SyncTaskExecutor
, andContentNegotiationManager
with an Accept header strategy. -
ResponseBodyEmitterReturnValueHandler
public ResponseBodyEmitterReturnValueHandler(List<HttpMessageConverter<?>> messageConverters, ReactiveAdapterRegistry registry, TaskExecutor executor, ContentNegotiationManager manager) Constructor that with added arguments to customize "reactive" type support.- Parameters:
messageConverters
- converters to write emitted objects withregistry
- for reactive return value type supportexecutor
- for blocking I/O writes of items emitted from reactive typesmanager
- for detecting streaming media types- Since:
- 5.0
-
ResponseBodyEmitterReturnValueHandler
public ResponseBodyEmitterReturnValueHandler(List<HttpMessageConverter<?>> messageConverters, ReactiveAdapterRegistry registry, TaskExecutor executor, ContentNegotiationManager manager, List<ViewResolver> viewResolvers, @Nullable LocaleResolver localeResolver) Constructor that with added arguments for view rendering.- Parameters:
messageConverters
- converters to write emitted objects withregistry
- for reactive return value type supportexecutor
- for blocking I/O writes of items emitted from reactive typesmanager
- for detecting streaming media typesviewResolvers
- resolvers for fragment stream renderinglocaleResolver
- localeResolver for fragment stream rendering- Since:
- 6.2
-
-
Method Details
-
supportsReturnType
Description copied from interface:HandlerMethodReturnValueHandler
Whether the given method return type is supported by this handler.- Specified by:
supportsReturnType
in interfaceHandlerMethodReturnValueHandler
- Parameters:
returnType
- the method return type to check- Returns:
true
if this handler supports the supplied return type;false
otherwise
-
handleReturnValue
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception Description copied from interface:HandlerMethodReturnValueHandler
Handle the given return value by adding attributes to the model and setting a view or setting theModelAndViewContainer.setRequestHandled(boolean)
flag totrue
to indicate the response has been handled directly.- Specified by:
handleReturnValue
in interfaceHandlerMethodReturnValueHandler
- Parameters:
returnValue
- the value returned from the handler methodreturnType
- the type of the return value. This type must have previously been passed toHandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
which must have returnedtrue
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current request- Throws:
Exception
- if the return value handling results in an error
-