REST 4サービスに対するSpring 4とJersey


117

Spring 4.0.6バージョンで新しいアプリケーションを作成する予定です。「XML」または「JSON」を返すことができるコントローラを使用します。前のプロジェクトでは、JAX-RS APIを使用して、RESTをサポートするSpringでJerseyを正常に実装しましたが、シニアからいくつかの記事と提案を読んだ後、Springはかなり良いRESTサポートを提供していると述べました。

JAX-RSとJerseyを使用せずにSpring RESTサポートを使用する場合に本当に混乱したポイントのいくつかは次のとおりです。

  1. Spring MVCでマーシャリングとアンマーシャリングを行う方法

  2. マーシャリングまたはアンマーシャリングのために、jax-rsを使用する必要がありますか?

  3. マーシャリングとアンマーシャリングがSpringによって自動的に処理される場合、xmlRootElementsはどのように認識されますか。

SpringがRESTの非常に優れたサポートを証明しているのに、私はまだ混乱していますが、なぜ人々はまだJersey with RESTを使用しているのですか?本当に詳しく知りたいです。

何か間違ったことを言ったら無視してください。例による説明は本当に役に立ちます。

前もって感謝します!!

回答:


119

JerseyとSpring MVCはどちらもすばらしいと思います。各プロジェクトには独自のスタイルと長所があります。とにかく、Stack Overflowは主観的な比較を求めるための適切な場所ではありません(質問はすぐに閉じられます)。他のすべての目的ですでにSpring を使用していて、JAX-RSを使用する必要がない場合は、Spring MVCが完全に理にかなっています。

(非)マーシャリングのような機能に関しては、JAX-RSは結局のところ仕様です-他のライブラリは同じAPIを実装しなくても同様の機能を提供できます。

  1. MessageBodyReaders / Writersの代わりに、Spring MVCはHttpMessageConvertersを使用してRESTリソースの(非)マーシャリングを処理します。Spring MVCはコンテンツネゴシエーションを処理し、ジョブに最適なコンバーターを選択します(メソッドに注釈を付けて、生成/消費するメディアタイプを示すことができます)。

  2. いいえ、リソースを(非)マーシャルするためにJAX-RSを使用する必要はありません。実際、JAX-RS実装とSpring MVCは、サードパーティのシリアライゼーションライブラリを使用して作業を行います。そのため、特定の規格に関連付けられていません。

  3. 4.0.6バージョンでは、Springは多くのHttpMessageConvertersをサポートしており、JSONにはJackson、XMLにはJAXBなどの多くの機能を備えています。Spring 4.1.0はさらにHttpMessageConvertersを追加しました:

最後のポイントに答えるの@XmlRootElementはJAXBアノテーションであり、JAX-RSの一部ではありません。SpringはJAXBをサポートしています

SpringでRESTを使用したより完全な例については、このスタートガイドをご覧ください(完全な例が10〜15分で実行されます)。

繰り返しになりますが、質問の最後の部分は非常に主観的です。JerseyやSpringだけでなく、JVMでRESTサービスを構築するための一般的なソリューションが数多くあります(Dropwizard、Play!Frameworkなど)。


2
誰かがこのような質問をすることをどこに提案しますか?
2016

8
「あなたの質問はすぐに閉じられます」!それほど速くありません:)
アフシンモアザミ

6
私はスタックオーバーフローが大好きで、クォーラが大好きです。この主観的な質問ポリシーを閉じるのは好きではありません。クォーラで技術的な質問をすることも考えていませんでした
Kalpesh Soni

正直な質問ですが、ジャージとスプリングレストの両方を同じEARに置いて、両方を異なるサービスセットで一緒に実行できますか?
pramodc84

22

AFAIK Spring RESTサポートはSpring MVCに基づいており、JerseyがJAX-RS仕様を実装しているのに対し、JAX-RSは実装していません。プロジェクトにSpring(Core、AOP、またはMVC)を持っている人は、JAX-RSインプリメンターよりもSpring ReSTサポートを選択します。

私は、成熟していて、JAX-RSを実装していて使いやすいジャージーをお勧めします。


1
返信をありがとう、jax-rsを使用せずに春にマーシャリングとマーシャリング解除を行う方法。
Robin Saxena、2014年

ええ、私はあなたに同意します。Spring Web MVC Restはそれほど使いやすいものではありません。注意が必要な設定はたくさんあります。
Evan Hu

2
スプリングブーツを使用する(または使用したい)場合は、ジャージも適しています。cf ドキュメント
herau

1
マーシャリングとアンマーシャリングにGoogle GSONライブラリを使用できます。Javaジェネリックとカスタムオブジェクトをサポートしています。
Tejzeratul 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.