SpringBoot HttpMessageConverterメッセージコンバータの使用方法
メッセージコンバータの役割
リクエストメッセージをJavaオブジェクトに変換する
Javaオブジェクトをレスポンスメッセージに変換する
メッセージ コンバータの主なメソッド
getSupportedMediaTypes: サポートされている MediaType コレクション (text/html、text/plain、application/json など) を取得します。 )
canRead: 読み込み可能か判定(リクエスト)
read: リクエストデータのフォーマット変換(リターン時に呼び出されます) canRead メソッドの値が true )
canWrite: 書き込み可能かどうか判定(応答)
write: フォーマットを変換応答データ (canWrite メソッドの戻り値が true の場合 Call)
デフォルト設定されたメッセージ コンバータ
SpringMVC は一部の HttpMessageConverter (WebMvcConfigurationSupport クラスの addDefaultHttpMessageConverters) を自動的に設定します起動時のメソッド
#ソース コードは次のとおりです。
protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters) { messageConverters.add(new ByteArrayHttpMessageConverter()); messageConverters.add(new StringHttpMessageConverter()); messageConverters.add(new ResourceHttpMessageConverter()); messageConverters.add(new ResourceRegionHttpMessageConverter()); try { messageConverters.add(new SourceHttpMessageConverter<>()); } catch (Throwable ex) { // Ignore when no TransformerFactory implementation is available... } messageConverters.add(new AllEncompassingFormHttpMessageConverter()); if (romePresent) { messageConverters.add(new AtomFeedHttpMessageConverter()); messageConverters.add(new RssChannelHttpMessageConverter()); } if (jackson2XmlPresent) { Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.xml(); if (this.applicationContext != null) { builder.applicationContext(this.applicationContext); } messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.build())); } else if (jaxb2Present) { messageConverters.add(new Jaxb2RootElementHttpMessageConverter()); } if (jackson2Present) { Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.json(); if (this.applicationContext != null) { builder.applicationContext(this.applicationContext); } messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build())); } else if (gsonPresent) { messageConverters.add(new GsonHttpMessageConverter()); } else if (jsonbPresent) { messageConverters.add(new JsonbHttpMessageConverter()); } if (jackson2SmilePresent) { Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.smile(); if (this.applicationContext != null) { builder.applicationContext(this.applicationContext); } messageConverters.add(new MappingJackson2SmileHttpMessageConverter(builder.build())); } if (jackson2CborPresent) { Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.cbor(); if (this.applicationContext != null) { builder.applicationContext(this.applicationContext); } messageConverters.add(new MappingJackson2CborHttpMessageConverter(builder.build())); } }
部分メッセージ コンバーターの解析
Name | # #Description|
---|---|
JSON 形式のデータの読み取りと書き込みを担当します (Jackson を使用) | |
フォーム フォーム データの読み取りと書き込みを担当します | |
XML 形式データの読み取りと書き込みを担当します (JAXB を使用) | |
バイナリ形式データの読み取りと書き込みを担当します | |
は文字列の読み取りと書き込みを担当しますformat data | |
はリソース ファイル データの読み取りと書き込みを担当します | |
担当リソース データの読み取りと書き込み用 |
##システムには、デフォルトで構成された一連のメッセージ コンバーターがあります。
処理プロセスは、収集された順序で適切なメッセージ コンバータを照合します。適切なメッセージ コンバータがあれば、そのメッセージ コンバータが処理 (読み取り、書き込み) に使用され、それ以降のメッセージ コンバータは処理されません。実行されました。
カスタム メッセージ コンバーターを有効にするには、コレクション内の同じ種類のメッセージ コンバーターの前に配置する必要があります。理由については、2 番目の点を参照してください。
考察: カスタム メッセージ コンバーターはコレクション内の同じタイプのメッセージ コンバーターの前に配置する必要があるため、コレクション内の元のメッセージ コンバーターを追加せずにカスタム効果を実現するために直接変更できるでしょうか。 (まだ調査されていません)。
カスタム メッセージ コンバーターを追加するときは、デフォルトのメッセージ コンバーターが有効かどうかに注意してください
- WebMvcConfigurer.configureMessageConverters メソッドはデフォルトのメッセージ コンバーター セットをオーバーライドします
- WebMvcConfigurer.extendMessageConverters メソッドはデフォルトのメッセージ コンバータ コレクションをオーバーライドしません
以上がSpringBoot HttpMessageConverterメッセージコンバータの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
