この記事では、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; }
@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())); } }
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>
ケースコード
)以上がSpring Boot で XML リクエストとレスポンスのサポートを拡張する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。