この記事では、Spring Boot で XML リクエストとレスポンスのサポートを拡張する方法を紹介します。必要な方は参考にしていただければ幸いです。
これまでのすべての Spring Boot チュートリアルでは、HTML および JSON 形式のリクエストとレスポンスの処理についてのみ説明し、使用しました。では、XML 形式のリクエストをコントローラー内のオブジェクトにすばやくパッケージ化し、XML 形式でオブジェクトを返すにはどうすればよいでしょうか?
実装原則: メッセージ コンバータ
上記の問題について詳しく説明する前に、Spring Boot での HTTP リクエストの実装には Spring MVC が使用されていることをまず知っておく必要があります。 Spring MVC にはメッセージコンバータの概念があり、主にさまざまな形式のリクエストデータを処理し、それをオブジェクトに変換して、より良いプログラミングエクスペリエンスを提供します。
HttpMessageConverter インターフェースは Spring MVC で定義されており、メッセージコンバーターの型の判断、読み書きの判断、操作を抽象化します。具体的には、次の定義がわかります。ご存知のとおり、HTTP リクエストの Content-Type にはさまざまな形式の定義があります。Xml 形式でのメッセージ変換をサポートしたい場合は、対応するコンバータを使用する必要があります。 Spring MVC には、デフォルトで、Jackson によって実装されたコンバーターのセットである MappingJackson2XmlHttpMessageConverter がすでにあります。
拡張実装
ステップ 1: Xml メッセージ コンバータの導入
従来の Spring アプリケーションでは、次の構成を通じて XML 形式データのメッセージ変換実装を追加できます。 #
public interface HttpMessageConverter<T> { boolean canRead(Class<?> clazz, [@Nullable](https://my.oschina.net/u/2896689) MediaType mediaType); boolean canWrite(Class<?> clazz, [@Nullable](https://my.oschina.net/u/2896689) MediaType mediaType); List<MediaType> getSupportedMediaTypes(); T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException; void write(T t, [@Nullable](https://my.oschina.net/u/2896689) MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException; }Spring Boot アプリケーションでは、上記のような面倒な作業は必要ありません。jackson-dataformat-xml 依存関係を追加するだけで、Spring Boot が MappingJackson2XmlHttpMessageConverter の実装を自動的に導入します。 ##同時に、Xml データを構成するために、オブジェクトの属性間の関係を維持するために使用されるアノテーションも上記の依存関係に含まれるため、この依存関係も必要です。 ステップ 2: オブジェクトと Xml の間の関係を定義する基本的な拡張が完了したら、次のような XML コンテンツに対応する Java オブジェクトを定義できます。 # その中には: @Data、@NoArgsConstructor、@AllArgsConstructor はコードを簡略化するための lombok のアノテーションであり、主に get、set、およびコンストラクター関数を生成するために使用されます。 @JacksonXmlRootElement および @JacksonXmlProperty アノテーションは、XML 内のオブジェクト属性間の対応を維持するために使用されます。 上で構成したユーザー オブジェクト、マッピングできる XML サンプルは次のとおりです (上記の XML を使用して、後でインターフェイスを要求できます):
@Configuration public class MessageConverterConfig1 extends WebMvcConfigurerAdapter { [@Override](https://my.oschina.net/u/1162528) public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.xml(); builder.indentOutput(true); converters.add(new MappingJackson2XmlHttpMessageConverter(builder.build())); } }ステップ 3: インターフェイスを作成するXML リクエストの受信変換するオブジェクトが完了したら、次のような XML を受信して XML を返すインターフェイスを作成できます。
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>最後に、Spring Boot アプリケーションを起動して、このインターフェイスを試してください。 POSTMAN などのリクエスト ツールを使用すると、Xml がリクエストされ、処理された XML コンテンツが返されることがわかります。 (
ケースコード
)以上がSpring Boot で XML リクエストとレスポンスのサポートを拡張する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。