web-dev-qa-db-ja.com

Spring RestサービスとJersey RestサービスおよびSpring + Jerseyソリューションの違いは何ですか?

安らかなサービス/ APIを構築したい。 playのようなフレームワークを使用してビルドしましたが、他のより効率的な方法を試してみたいと思います。 JerseyはREST APIを構築するための一般的なライブラリであり、Springも優れたフレームワークであると聞きました。しかし、Spring + Jerseyのようなソリューションもいくつか見ました。したがって、私はそれらの残りのAPIソリューションについて少し混乱しています。

誰がそれらの違いは何ですか? Jersey REST、Spring Rest、Spring + Jersey Rest?

私の目標は、jsonを入出力として使用するREST APIをいくつか構築することです。入力json/objectを処理し、json/objectを返すバックエンドプロセスロジックとしてjarファイルがあります。

どうもありがとう。

32
Terry

JerseyはSunが提供するJAX-RS APIのサンプル実装であり、Spring RESTはもちろん同じAPI/JSRのSpringの実装です。大きな違いはSpring REST Spring Data Rest など、他のSpring API(必要に応じて)に簡単に統合できます。

それらの間にはいくつかの注目すべき違いがあります-JerseyResourcesを「埋め込む」ことができます(SpringではControllers)特定のパスのサブパスを担当する別のクラスを有効にするために、相互の中で、これは現在Springでは利用できないように見えます(定義する必要があります)フルパス)。また、私の意見では、Jerseyは「すぐに使える」エラー応答を提供します(JSONペイロードをJava Bean)にマップできない理由など)。ただし、追加の作業は必要ありません。

最終的に、それらを選択する際の違いは通常、最終的には-あなたは既に他のSpringライブラリをアプリケーションに統合する予定ですか?もしそうならSpring RESTはそれを統合するのがはるかに簡単になるので行く方法です、そうでなければそれはあなたが使用したいと思う本当に個人的な好みです。個人的にジャージーが好きですが他の関連するSpringプロジェクト( Spring HATEOAS など)の力により、Springがより良い選択になります。実際の決定要因はないと思います。

「ゴールド」ターゲットはJSON入出力を備えたシンプルなAPIなので、 Spring REST guide に従うことをお勧めします。

28

大きな違いの1つは、単体テストのサポートの分野です。

Jersey Test Framework はサーバー側コードのモックには適していません-たとえば、RESTリソースがサービスに依存している場合、テスト時にサービスをモックしたい場合ただし、Jersey Testsは別個のコンテナを実行し、ユニットテストでRESTリソースの実行中のインスタンスを呼び出します-この時点では、ドキュメントも方法も見つかりませんでしたサーバー側のコードをモックするため。

それどころか、 Spring MVCテスト はコンテナを必要とせず、コントローラとよりよく統合されています。依存性注入を使用して、モックサービス/ DAOを注入し、より良い単体テストを行うことができます。

また、Springプロジェクトに関するドキュメントは、Jerseyと比較するとより成熟していることがわかりました。

6
Wand Maker