Class AbstractMessageConverterMethodArgumentResolver
java.lang.Object
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver
- Direct Known Subclasses:
AbstractMessageConverterMethodProcessor,RequestPartMethodArgumentResolver
public abstract class AbstractMessageConverterMethodArgumentResolver
extends Object
implements HandlerMethodArgumentResolver
A base class for resolving method argument values by reading from the body of
a request with
HttpMessageConverters.- Since:
- 3.1
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static enum -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.apache.commons.logging.Logprotected final List<HttpMessageConverter<?>> -
Constructor Summary
ConstructorsConstructorDescriptionAbstractMessageConverterMethodArgumentResolver(List<HttpMessageConverter<?>> converters) Basic constructor with converters only.AbstractMessageConverterMethodArgumentResolver(List<HttpMessageConverter<?>> converters, @Nullable List<Object> requestResponseBodyAdvice) Constructor with converters andRequest~andResponseBodyAdvice. -
Method Summary
Modifier and TypeMethodDescriptionadaptArgumentIfNecessary(@Nullable Object arg, MethodParameter parameter) Adapt the given argument against the method parameter, if necessary.protected ServletServerHttpRequestcreateInputMessage(NativeWebRequest webRequest) Create a newHttpInputMessagefrom the givenNativeWebRequest.protected ResolvableTypeReturn the generic type of thereturnType(or of the nested type if it is anHttpEntityor/and anOptional).getSupportedMediaTypes(Class<?> clazz) Return the media types supported by all provided message converters sorted by specificity viaMimeTypeUtils.sortBySpecificity(List).protected booleanisBindExceptionRequired(WebDataBinder binder, MethodParameter parameter) Whether to raise a fatal bind exception on validation errors.readWithMessageConverters(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType) Create the method argument value of the expected parameter type by reading from the given HttpInputMessage.readWithMessageConverters(NativeWebRequest webRequest, MethodParameter parameter, Type paramType) Create the method argument value of the expected parameter type by reading from the given request.protected voidvalidateIfApplicable(WebDataBinder binder, MethodParameter parameter) Validate the binding target if applicable.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.web.method.support.HandlerMethodArgumentResolver
resolveArgument, supportsParameter
-
Field Details
-
logger
protected final org.apache.commons.logging.Log logger -
messageConverters
-
-
Constructor Details
-
AbstractMessageConverterMethodArgumentResolver
Basic constructor with converters only. -
AbstractMessageConverterMethodArgumentResolver
public AbstractMessageConverterMethodArgumentResolver(List<HttpMessageConverter<?>> converters, @Nullable List<Object> requestResponseBodyAdvice) Constructor with converters andRequest~andResponseBodyAdvice.- Since:
- 4.2
-
-
Method Details
-
readWithMessageConverters
protected @Nullable Object readWithMessageConverters(NativeWebRequest webRequest, MethodParameter parameter, Type paramType) throws IOException, HttpMediaTypeNotSupportedException, HttpMessageNotReadableException Create the method argument value of the expected parameter type by reading from the given request.- Parameters:
webRequest- the current requestparameter- the method parameter descriptor (may benull)paramType- the type of the argument value to be created- Returns:
- the created method argument value
- Throws:
IOException- if the reading from the request failsHttpMediaTypeNotSupportedException- if no suitable message converter is foundHttpMessageNotReadableException
-
readWithMessageConverters
protected <T> @Nullable Object readWithMessageConverters(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType) throws IOException, HttpMediaTypeNotSupportedException, HttpMessageNotReadableException Create the method argument value of the expected parameter type by reading from the given HttpInputMessage.- Type Parameters:
T- the expected type of the argument value to be created- Parameters:
inputMessage- the HTTP input message representing the current requestparameter- the method parameter descriptortargetType- the target type, not necessarily the same as the method parameter type, for example, forHttpEntity<String>.- Returns:
- the created method argument value
- Throws:
IOException- if the reading from the request failsHttpMediaTypeNotSupportedException- if no suitable message converter is foundHttpMessageNotReadableException
-
getNestedTypeIfNeeded
Return the generic type of thereturnType(or of the nested type if it is anHttpEntityor/and anOptional). -
createInputMessage
Create a newHttpInputMessagefrom the givenNativeWebRequest.- Parameters:
webRequest- the web request to create an input message from- Returns:
- the input message
-
validateIfApplicable
Validate the binding target if applicable.The default implementation checks for
@jakarta.validation.Valid, Spring'sValidated, and custom annotations whose name starts with "Valid".- Parameters:
binder- the DataBinder to be usedparameter- the method parameter descriptor- Since:
- 4.1.5
- See Also:
-
isBindExceptionRequired
Whether to raise a fatal bind exception on validation errors.- Parameters:
binder- the data binder used to perform data bindingparameter- the method parameter descriptor- Returns:
trueif the next method argument is not of typeErrors- Since:
- 4.1.5
-
getSupportedMediaTypes
Return the media types supported by all provided message converters sorted by specificity viaMimeTypeUtils.sortBySpecificity(List).- Since:
- 5.3.4
-
adaptArgumentIfNecessary
protected @Nullable Object adaptArgumentIfNecessary(@Nullable Object arg, MethodParameter parameter) Adapt the given argument against the method parameter, if necessary.- Parameters:
arg- the resolved argumentparameter- the method parameter descriptor- Returns:
- the adapted argument, or the original resolved argument as-is
- Since:
- 4.3.5
-