此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.1.10Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.1.10Spring中文文档

该模块包含用于读取和写入 HTTP 请求和响应正文的接口。 实例用于客户端(例如,在 )和服务器端(例如,在 Spring MVC REST 控制器中)。spring-webHttpMessageConverterInputStreamOutputStreamHttpMessageConverterRestClientSpring中文文档

框架中提供了主媒体 (MIME) 类型的具体实现,默认情况下,在客户端和 和 以及服务器端注册(请参阅配置消息转换器)。RestClientRestTemplateRequestMappingHandlerAdapterSpring中文文档

下面介绍了几种实现。 有关完整列表,请参阅 HttpMessageConverter Javadoc。 对于所有转换器,都使用默认媒体类型,但您可以通过设置属性来覆盖它。HttpMessageConvertersupportedMediaTypesSpring中文文档

表 1.HttpMessageConverter 实现
消息转换器 描述

StringHttpMessageConverterSpring中文文档

可以从 HTTP 请求和响应读取和写入实例的实现。 默认情况下,此转换器支持所有文本媒体类型(),并使用 的 写入。HttpMessageConverterStringtext/*Content-Typetext/plainSpring中文文档

FormHttpMessageConverterSpring中文文档

可以从 HTTP 请求和响应读取和写入表单数据的实现。 默认情况下,此转换器读取和写入媒体类型。 表单数据从 . 转换器还可以写入(但不能读取)从 . 默认情况下,受支持。 可以支持其他多部分子类型来写入表单数据。 有关更多详细信息,请参阅 javadoc。HttpMessageConverterapplication/x-www-form-urlencodedMultiValueMap<String, String>MultiValueMap<String, Object>multipart/form-dataFormHttpMessageConverterSpring中文文档

ByteArrayHttpMessageConverterSpring中文文档

可以从 HTTP 请求和响应读取和写入字节数组的实现。 默认情况下,此转换器支持所有媒体类型 (),并使用 的 写入。 可以通过设置属性并重写 来覆盖此设置。HttpMessageConverter*/*Content-Typeapplication/octet-streamsupportedMediaTypesgetContentType(byte[])Spring中文文档

MarshallingHttpMessageConverterSpring中文文档

一个可以通过使用 Spring 和包中的抽象来读取和写入 XML 的实现。 此转换器在使用之前需要 and。 您可以通过构造函数或 Bean 属性注入这些属性。 默认情况下,此转换器支持 和 。HttpMessageConverterMarshallerUnmarshallerorg.springframework.oxmMarshallerUnmarshallertext/xmlapplication/xmlSpring中文文档

MappingJackson2HttpMessageConverterSpring中文文档

可以使用 Jackson 的 . 您可以通过使用 Jackson 提供的注释根据需要自定义 JSON 映射。 当需要进一步控制时(对于需要为特定类型提供自定义 JSON 序列化程序/反序列化程序的情况),可以通过该属性注入自定义项。 默认情况下,此转换器支持 .这需要依赖项。HttpMessageConverterObjectMapperObjectMapperObjectMapperapplication/jsoncom.fasterxml.jackson.core:jackson-databindSpring中文文档

MappingJackson2XmlHttpMessageConverterSpring中文文档

可以使用 Jackson XML 扩展的 . 您可以根据需要使用 JAXB 或 Jackson 提供的注释来自定义 XML 映射。 当需要进一步控制时(对于需要为特定类型提供自定义 XML 序列化程序/反序列化程序的情况),可以通过该属性注入自定义项。 默认情况下,此转换器支持 .这需要依赖项。HttpMessageConverterXmlMapperXmlMapperObjectMapperapplication/xmlcom.fasterxml.jackson.dataformat:jackson-dataformat-xmlSpring中文文档

MappingJackson2CborHttpMessageConverterSpring中文文档

com.fasterxml.jackson.dataformat:jackson-dataformat-cborSpring中文文档

SourceHttpMessageConverterSpring中文文档

可以从 HTTP 请求和响应读取和写入的实现。 仅支持 、 和 。 默认情况下,此转换器支持 和 。HttpMessageConverterjavax.xml.transform.SourceDOMSourceSAXSourceStreamSourcetext/xmlapplication/xmlSpring中文文档

GsonHttpMessageConverterSpring中文文档

可以使用“Google Gson”读取和写入 JSON 的实现。 这需要依赖项。HttpMessageConvertercom.google.code.gson:gsonSpring中文文档

JsonbHttpMessageConverterSpring中文文档

可以使用 Jakarta Json Bind API 读取和写入 JSON 的实现。 这需要依赖项和可用的实现。HttpMessageConverterjakarta.json.bind:jakarta.json.bind-apiSpring中文文档

ProtobufHttpMessageConverterSpring中文文档

一种实现,可以读取和写入内容类型的二进制格式的 Protobuf 消息。这需要依赖项。HttpMessageConverter"application/x-protobuf"com.google.protobuf:protobuf-javaSpring中文文档

ProtobufJsonFormatHttpMessageConverterSpring中文文档

一种实现,可以在 Protobuf 消息中读取和写入 JSON 文档。 这需要依赖项。HttpMessageConvertercom.google.protobuf:protobuf-java-utilSpring中文文档