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
ConstructorsConstructorDescriptionCreate a new instance of theResourceHttpMessageConverterthat supports read streaming, i.e.ResourceHttpMessageConverter(boolean supportsReadStreaming) Create a new instance of theResourceHttpMessageConverter. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddDefaultHeaders(HttpOutputMessage message, Resource resource, MediaType contentType) Adds the default headers for the given resource to the given message.protected LonggetContentLength(Resource resource, MediaType contentType) Returns the content length for the given type.protected MediaTypegetDefaultContentType(Resource resource) Returns the default content type for the given type.protected ResourcereadInternal(Class<? extends Resource> clazz, HttpInputMessage inputMessage) Abstract template method that reads the actual object.protected booleanIndicates whether the given class is supported by this converter.protected booleansupportsRepeatableWrites(Resource resource) Indicates whether this message converter can write the given object multiple times.protected voidwriteContent(Resource resource, HttpOutputMessage outputMessage) protected voidwriteInternal(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, writeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.http.converter.HttpMessageConverter
getSupportedMediaTypes
-
Constructor Details
-
ResourceHttpMessageConverter
public ResourceHttpMessageConverter()Create a new instance of theResourceHttpMessageConverterthat supports read streaming, i.e. can convert anHttpInputMessagetoInputStreamResource. -
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:AbstractHttpMessageConverterIndicates whether the given class is supported by this converter.- Specified by:
supportsin classAbstractHttpMessageConverter<Resource>- Parameters:
clazz- the class to test for support- Returns:
trueif supported;falseotherwise
-
readInternal
protected Resource readInternal(Class<? extends Resource> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException Description copied from class:AbstractHttpMessageConverterAbstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage).- Specified by:
readInternalin 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:AbstractHttpMessageConverterReturns 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
supportedMediaTypesproperty, if any. Can be overridden in subclasses.- Overrides:
getDefaultContentTypein classAbstractHttpMessageConverter<Resource>- Parameters:
resource- the type to return the content type for- Returns:
- the content type, or
nullif not known
-
getContentLength
protected Long getContentLength(Resource resource, @Nullable MediaType contentType) throws IOException Description copied from class:AbstractHttpMessageConverterReturns 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:
getContentLengthin classAbstractHttpMessageConverter<Resource>- Parameters:
resource- the type to return the content length for- Returns:
- the content length, or
nullif not known - Throws:
IOException
-
addDefaultHeaders
public void addDefaultHeaders(HttpOutputMessage message, Resource resource, @Nullable MediaType contentType) throws IOException Adds the default headers for the given resource to the given message.- Throws:
IOException- Since:
- 6.0
-
writeInternal
protected void writeInternal(Resource resource, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException Description copied from class:AbstractHttpMessageConverterAbstract template method that writes the actual body. Invoked fromAbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage).- Specified by:
writeInternalin 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 -
supportsRepeatableWrites
Description copied from class:AbstractHttpMessageConverterIndicates whether this message converter can write the given object multiple times.Default implementation returns
false.- Overrides:
supportsRepeatableWritesin classAbstractHttpMessageConverter<Resource>- Parameters:
resource- the object t- Returns:
trueiftcan be written repeatedly;falseotherwise
-