SpringMVC 4.3ソースコード分析のHttpMessageConverter
2988 ワード
1.HttpMessageConverterの概要
HttpMessageConverterとは、HttpServiceletRequestのデータを、MediaTypeに従って指定されたフォーマットのデータに変換することです.たとえば、一般的なフォームのコミットやJson文字列のコミットなど、主な実装インタフェースは次のとおりです.
インタフェースの実装クラスには、主に次のようなクラスがあります.
2.HttpMessageConverterまとめ
HttpMessageConverterはSpringMVC全体において、MediaTypeタイプに応じてHttpServertRequestのデータを指定オブジェクトに変換する変換器、またはオブジェクトを指定フォーマットのデータに変換する(PS:byte/string/xml/jsonなど);その全体的なデザインはHandlerMethodArgumentResolverに似ています!
HttpMessageConverterとは、HttpServiceletRequestのデータを、MediaTypeに従って指定されたフォーマットのデータに変換することです.たとえば、一般的なフォームのコミットやJson文字列のコミットなど、主な実装インタフェースは次のとおりです.
// -> requests response
public interface HttpMessageConverter {
// class (MediaType )
boolean canRead(Class> clazz, MediaType mediaType);
// class MediaType -> HttpMessageConverter
boolean canWrite(Class> clazz, MediaType mediaType);
// HttpMessageConverter MediaType
List getSupportedMediaTypes();
// HttpInputMessage , T
T read(Class extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException;
// T HttpOutputMessage
void write(T t, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException;
}
インタフェースの実装クラスには、主に次のようなクラスがあります.
1. FormHttpMessageConverter
MultiValueMap , MediaType "multipart/form-data", InputStream , & , MultiValueMap, MultiValueMap & , ,
2. BufferedImageHttpMessageConverter
BufferedImgae HttpMessageConverter, ImageReader HttpBody BufferedImage, ImageWriter ImageReader OutputMessage
3. StringHttpMessageConverter
String , InputMessage str, OutputMessage
4. SourceHttpMessageConverter
DOMSource, SAXSource, StAXSource, StreamSource, Source , , HttpBody , TransformerFactory
5. ResourceHttpMessageConverter
Resource , HttpBody InputStreamResource|ByteArrayResource, Resource ,
6. ProtobufHttpMessageConverter
com.google.protobuf.Message, com.google.protobuf.Message.Builder HttpBody Message, ProtobufFormatter com.google.protobuf.Message
7. ObjectToStringHttpMessageConverter
MediaType text/plain , InputMessage , ConversionService Object; Obj String, String
8. ByteArrayHttpMessageConverter
byte , InputMessage , OutputMessage
9. AbstractXmlHttpMessageConverter
xml Object HttpMessageConverter
10. AbstractGenericHttpMessageConverter
Json Object HttpMessageConverter (PS: JackSon Gson)
11. GsonHttpMessageConverter
application/*++json , Gson,
12. MappingJackson2XmlHttpMessageConverter
application/*++json/*+xml , JackSon,
2.HttpMessageConverterまとめ
HttpMessageConverterはSpringMVC全体において、MediaTypeタイプに応じてHttpServertRequestのデータを指定オブジェクトに変換する変換器、またはオブジェクトを指定フォーマットのデータに変換する(PS:byte/string/xml/jsonなど);その全体的なデザインはHandlerMethodArgumentResolverに似ています!