SpringCloud 提供的MessageConverters
2023-11-27 13:40 更新
如前所述,该框架已经提供了MessageConverters
堆栈来处理最常见的用例。以下列表按优先级描述了提供的MessageConverters
(使用了第一个有效的MessageConverter
):
ApplicationJsonMessageMarshallingConverter
:org.springframework.messaging.converter.MappingJackson2MessageConverter
的变体。对于contentType
为application/json
(默认)的情况,支持将Message
的有效负载转换为POJO或从POJO转换为PO195。TupleJsonMessageConverter
:已弃用支持将Message
的有效负载转换为org.springframework.tuple.Tuple
或从org.springframework.tuple.Tuple
转换。ByteArrayMessageConverter
:在contentType
为application/octet-stream
的情况下,支持将Message
的有效载荷从byte[]
转换为byte[]
。它本质上是一个传递,主要是为了向后兼容而存在。ObjectStringMessageConverter
:当contentType
为text/plain
时,支持将任何类型转换为String
。它调用Object的toString()
方法,或者,如果有效载荷为byte[]
,则调用新的String(byte[])
。JavaSerializationMessageConverter
:已弃用当contentType
为application/x-java-serialized-object
时,支持基于Java序列化的转换。KryoMessageConverter
:已弃用当contentType
为application/x-java-object
时,支持基于Kryo序列化的转换。JsonUnmarshallingConverter
:类似于ApplicationJsonMessageMarshallingConverter
。当contentType
为application/x-java-object
时,它支持任何类型的转换。它期望将实际类型信息作为属性嵌入在contentType
中(例如,application/x-java-object;type=foo.bar.Cat
)。
当找不到合适的转换器时,框架将引发异常。发生这种情况时,应检查代码和配置,并确保您没有错过任何内容(即,确保使用绑定或标头提供了contentType
)。但是,很可能您发现了一些不常见的情况(例如自定义contentType
),并且提供的MessageConverters
的当前堆栈不知道如何进行转换。在这种情况下,您可以添加自定义MessageConverter
。请参见“用户定义的消息转换器”。
以上内容是否对您有帮助:
更多建议: