[解決済み] JAX-RSとSpring Restの違いについて
質問
との違いに戸惑いました。 JAX-RS (まあ、JAX-RSは単なる仕様なので、比較はJerseyで行うべきかもしれませんが)と SpringによるRestfulサービス . ネットでもっと情報を探そうとすると、ますます分からなくなるんです。私の会社は、Restful APIを開発するためにSpring MVCを使用しています。
分かりにくいのは、JAX-RSは、以下の略です。 RESTful Webサービス用Java API Springでもjavaを使ってRESTful Web Servicesを開発しているので、実は違いがよくわからないのです。SpringはJAX-RSの仕様に準拠しているのでしょうか?
今まで知っている限りでは
- JAX-RSはブループリント/スペックであり、実装としてJersey、RESTeasyなどがある。
どのように解決するのですか?
JAX-RS
JAX-RSは 仕様 は、Java で REST ウェブサービスを実装するためのものであり、現在は JSR-370 . の一部です。 Java EE技術 で定義されています。 JSR 366 .
ジャージー (GlassFish と Payara に同梱) が JAX-RS のリファレンス実装ですが、その他にも RESTEasy (JBoss EAPとWildFlyに同梱)および アパッチCXF (TomEE および WebSphere に同梱)。
Springフレームワーク
は スプリングフレームワーク は フルフレームワーク Javaエンタープライズ・アプリケーションを作成することができます。RESTの機能を提供するのは Spring MVC モジュール モデルビューコントローラー の機能)。JAX-RSの実装ではなく、JAX-RS標準のSpringの代替品と見ることができる。
また、Springエコシステムでは 幅広いプロジェクト エンタープライズ・アプリケーションを作成するために、永続性、セキュリティ、ソーシャルネットワークとの統合、バッチ処理などをカバーします。
事例紹介
JAX-RS APIを使用した以下のリソースコントローラを考えてみましょう。
@Path("/greetings")
public class JaxRsController {
@GET
@Path("/{name}")
@Produces(MediaType.TEXT_PLAIN)
public Response greeting(@PathParam("name") String name) {
String greeting = "Hello " + name;
return Response.ok(greeting).build();
}
}
Spring MVC APIを使った同等の実装は、以下のようになります。
@RestController
@RequestMapping("/greetings")
public class SpringRestController {
@RequestMapping(method = RequestMethod.GET,
value = "/{name}",
produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<?> greeting(@PathVariable String name) {
String greeting = "Hello " + name;
return new ResponseEntity<>(greeting, HttpStatus.OK);
}
}
Spring BootとJerseyを使う
Spring Bootでは
spring-boot-starter-jersey
モジュールを使用すると、Spring MVCの代わりにRESTエンドポイントにJAX-RSプログラミングモデルを使用することができます。これはJersey 2.xでかなりうまく動きます。
Jersey 2.xとSpring Boot 1.4.xを使ったWebアプリケーションの完全な作成例については、以下を参照してください。 回答 .
関連
-
[解決済み】BindingResultもBean名のプレーンターゲットオブジェクトもリクエスト属性として利用できない [重複].
-
[解決済み] Spring 3 リクエスト処理に失敗しました。ネストされた例外は java.lang.NullPointerException です。
-
[解決済み] Spring SecurityのantMatcher()はいつ使うのか?
-
[解決済み] JAX-RSとJerseyでRESTトークンベースの認証を実装する方法
-
[解決済み] springの@Controllerアノテーションと@RestControllerアノテーションの違いについて
-
[解決済み】Spring MVCで静的コンテンツを処理する方法は?
-
[解決済み] JAX-RSとSpring Restの違いについて
-
[解決済み] SwaggerのURLに認証なしでアクセスできるようにSpring Securityを設定する方法
-
[解決済み] Spring3コントローラで "ModelAndView "と "String "を返すのはどっちがいい?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】BindingResultもBean名のプレーンターゲットオブジェクトもリクエスト属性として利用できない [重複].
-
[解決済み] Spring 3 リクエスト処理に失敗しました。ネストされた例外は java.lang.NullPointerException です。
-
[解決済み] Spring SecurityのantMatcher()はいつ使うのか?
-
[解決済み】Spring MVCで静的コンテンツを処理する方法は?
-
[解決済み] JAX-RSとSpring Restの違いについて
-
[解決済み] SwaggerのURLに認証なしでアクセスできるようにSpring Securityを設定する方法
-
[解決済み] Spring3コントローラで "ModelAndView "と "String "を返すのはどっちがいい?