SpringCloud 提供的MessageConverters

2023-11-27 13:40 更新

如前所述,該框架已經(jīng)提供了MessageConverters堆棧來處理最常見的用例。以下列表按優(yōu)先級描述了提供的MessageConverters(使用了第一個有效的MessageConverter):

  1. ApplicationJsonMessageMarshallingConverterorg.springframework.messaging.converter.MappingJackson2MessageConverter的變體。對于contentTypeapplication/json(默認)的情況,支持將Message的有效負載轉換為POJO或從POJO轉換為PO195。
  2. TupleJsonMessageConverter:已棄用支持將Message的有效負載轉換為org.springframework.tuple.Tuple或從org.springframework.tuple.Tuple轉換。
  3. ByteArrayMessageConverter:在contentTypeapplication/octet-stream的情況下,支持將Message的有效載荷從byte[]轉換為byte[]。它本質上是一個傳遞,主要是為了向后兼容而存在。
  4. ObjectStringMessageConverter:當contentTypetext/plain時,支持將任何類型轉換為String它調用Object的toString()方法,或者,如果有效載荷為byte[],則調用新的String(byte[])
  5. JavaSerializationMessageConverter:已棄用contentTypeapplication/x-java-serialized-object時,支持基于Java序列化的轉換。
  6. KryoMessageConverter:已棄用contentTypeapplication/x-java-object時,支持基于Kryo序列化的轉換。
  7. JsonUnmarshallingConverter:類似于ApplicationJsonMessageMarshallingConverter。contentTypeapplication/x-java-object時,它支持任何類型的轉換。它期望將實際類型信息作為屬性嵌入在contentType中(例如,application/x-java-object;type=foo.bar.Cat)。

當找不到合適的轉換器時,框架將引發(fā)異常。發(fā)生這種情況時,應檢查代碼和配置,并確保您沒有錯過任何內(nèi)容(即,確保使用綁定或標頭提供了contentType)。但是,很可能您發(fā)現(xiàn)了一些不常見的情況(例如自定義contentType),并且提供的MessageConverters的當前堆棧不知道如何進行轉換。在這種情況下,您可以添加自定義MessageConverter。請參見“用戶定義的消息轉換器”。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號