Spring 4.0.6バージョンで新しいアプリケーションを作成する予定です。 「XML」または「JSON」を返すことができるコントローラーを使用します。前のプロジェクトでは、JAX-RS APIを使用してRESTをサポートするためにSpringでJerseyを実装しましたが、高齢者からの記事や提案を読んだ後、春はかなり良いRESTサポート。
JAX-RSとJerseyを使用せずにSpring RESTサポートを使用する場合、私を本当に混乱させたポイントのいくつかは次のとおりです。
Spring MVCでどのようにマーシャリングとアンマーシャリングが行われましたか?
マーシャリングまたはアンマーシャリングにjax-rsを使用する必要があるかどうか。
マーシャリングとアンマーシャリングがスプリングによって自動的に処理される場合、xmlRootElementsをどのように認識しますか。
SpringがRESTの非常に良いサポートを証明している場合、私はまだ混乱しています。もっと詳しく知りたいと本当に思っています。
間違ったことを言った場合は無視してください。例付きの説明は本当に役立ちます。
前もって感謝します!!
ジャージーとSpring MVCの両方が素晴らしいと思います-各プロジェクトには独自のスタイルと強みがあります。とにかく、スタックオーバーフローは主観的な比較を行うのに適した場所ではありません(質問はすぐに終了します)。他のすべてに既にSpringを使用していて、JAX-RSを使用するためにrequiredではない場合、Spring MVCは完全に理にかなっています。
マーシャリング(アン)などの機能に関して、JAX-RSは結局のところ単なる仕様です。他のライブラリは、同じAPIを実装しなくても同様の機能を提供できます。
MessageBodyReaders /Writersの代わりに、Spring MVCは HttpMessageConverters を使用して、RESTリソースをマーシャリング(アン)します。 Spring MVCは、コンテンツネゴシエーションを処理し、ジョブに最適なコンバーターを選択します(メソッドに注釈を付けて、作成/消費するメディアタイプを示唆できます)。
いいえ、JAX-RSを使用してリソースを(アン)マーシャリングする必要はありません。実際、JAX-RS実装とSpring MVCは、サードパーティのシリアル化ライブラリを使用してジョブを実行します。そのため、特定の標準に関連付けられていません。
4.0.6バージョンでは、JSONのJackson、XMLのJAXBなど、多くの HttpMessageConverters をサポートしています。 Spring 4.1.0でさらに追加 HttpMessageConverters :
最後の点に答えるために、@XmlRootElement
はJAXBアノテーションであり、JAX-RSの一部ではありません。 SpringはJAXBをサポート 。
SpringでRESTを使用したより完全な例については、 この入門ガイド を確認してください(10〜15分で実行される完全な例を取得できます)。
繰り返しになりますが、質問の最後の部分は非常に主観的です-ジャージーとスプリング(Dropwizard、Play!Frameworkなど)だけでなく、JVMでRESTサービスを構築するための多くの一般的なソリューションがあります。
AFAIK Spring RESTサポートは、JerseyがJAX-RS仕様を実装している間に、Spring MVCに基づいており、JAX-RS実装に基づいていません。プロジェクトにSpring(Core、AOP、またはMVC)が含まれている場合は、JAX-RS実装者よりもSpring ReSTサポートを選択します。
成熟したジャージーをお勧めします。JAX-RSを実装しており、使いやすいです。