Class ResourceHttpMessageConverter
java.lang.Object
org.springframework.http.converter.AbstractHttpMessageConverter<Resource>
org.springframework.http.converter.ResourceHttpMessageConverter
- All Implemented Interfaces:
HttpMessageConverter<Resource>
Implementation of
HttpMessageConverter
that can read/write Resources
and supports byte range requests.
By default, this converter can read all media types. The MediaTypeFactory
is used
to determine the Content-Type
of written resources.
- Since:
- 3.0.2
- Author:
- Arjen Poutsma, Juergen Hoeller, Kazuki Shimizu
-
Field Summary
Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
-
Constructor Summary
ConstructorDescriptionCreate a new instance of theResourceHttpMessageConverter
that supports read streaming, i.e.ResourceHttpMessageConverter
(boolean supportsReadStreaming) Create a new instance of theResourceHttpMessageConverter
. -
Method Summary
Modifier and TypeMethodDescriptionprotected Long
getContentLength
(Resource resource, MediaType contentType) Returns the content length for the given type.protected MediaType
getDefaultContentType
(Resource resource) Returns the default content type for the given type.protected Resource
readInternal
(Class<? extends Resource> clazz, HttpInputMessage inputMessage) Abstract template method that reads the actual object.protected boolean
Indicates whether the given class is supported by this converter.protected void
writeContent
(Resource resource, HttpOutputMessage outputMessage) protected void
writeInternal
(Resource resource, HttpOutputMessage outputMessage) Abstract template method that writes the actual body.Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
addDefaultHeaders, canRead, canRead, canWrite, canWrite, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.http.converter.HttpMessageConverter
getSupportedMediaTypes
-
Constructor Details
-
ResourceHttpMessageConverter
public ResourceHttpMessageConverter()Create a new instance of theResourceHttpMessageConverter
that supports read streaming, i.e. can convert anHttpInputMessage
toInputStreamResource
. -
ResourceHttpMessageConverter
public ResourceHttpMessageConverter(boolean supportsReadStreaming) Create a new instance of theResourceHttpMessageConverter
.- Parameters:
supportsReadStreaming
- whether the converter should support read streaming, i.e. convert toInputStreamResource
- Since:
- 5.0
-
-
Method Details
-
supports
Description copied from class:AbstractHttpMessageConverter
Indicates whether the given class is supported by this converter.- Specified by:
supports
in classAbstractHttpMessageConverter<Resource>
- Parameters:
clazz
- the class to test for support- Returns:
true
if supported;false
otherwise
-
readInternal
protected Resource readInternal(Class<? extends Resource> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException Description copied from class:AbstractHttpMessageConverter
Abstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage)
.- Specified by:
readInternal
in classAbstractHttpMessageConverter<Resource>
- Parameters:
clazz
- the type of object to returninputMessage
- the HTTP input message to read from- Returns:
- the converted object
- Throws:
IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errors
-
getDefaultContentType
Description copied from class:AbstractHttpMessageConverter
Returns the default content type for the given type. Called whenAbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
is invoked without a specified content type parameter.By default, this returns the first element of the
supportedMediaTypes
property, if any. Can be overridden in subclasses.- Overrides:
getDefaultContentType
in classAbstractHttpMessageConverter<Resource>
- Parameters:
resource
- the type to return the content type for- Returns:
- the content type, or
null
if not known
-
getContentLength
protected Long getContentLength(Resource resource, @Nullable MediaType contentType) throws IOException Description copied from class:AbstractHttpMessageConverter
Returns the content length for the given type.By default, this returns
null
, meaning that the content length is unknown. Can be overridden in subclasses.- Overrides:
getContentLength
in classAbstractHttpMessageConverter<Resource>
- Parameters:
resource
- the type to return the content length for- Returns:
- the content length, or
null
if not known - Throws:
IOException
-
writeInternal
protected void writeInternal(Resource resource, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException Description copied from class:AbstractHttpMessageConverter
Abstract template method that writes the actual body. Invoked fromAbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
.- Specified by:
writeInternal
in classAbstractHttpMessageConverter<Resource>
- Parameters:
resource
- the object to write to the output messageoutputMessage
- the HTTP output message to write to- Throws:
IOException
- in case of I/O errorsHttpMessageNotWritableException
- in case of conversion errors
-
writeContent
protected void writeContent(Resource resource, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
-