ホームページ >Java >&#&チュートリアル >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 番目の点を参照してください。
考察: カスタム メッセージ コンバーターはコレクション内の同じタイプのメッセージ コンバーターの前に配置する必要があるため、コレクション内の元のメッセージ コンバーターを追加せずにカスタム効果を実現するために直接変更できるでしょうか。 (まだ調査されていません)。
カスタム メッセージ コンバーターを追加するときは、デフォルトのメッセージ コンバーターが有効かどうかに注意してください
以上がSpringBoot HttpMessageConverterメッセージコンバータの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。