JAX-RS(JAX-RSは単なる仕様なので、Jerseyを使って比較するべきです)とSpring for Restful servicesの違いを混同しました。私はオンラインでより多くの情報を検索しようとしました、そしてそれはより混乱します。私の会社はRestful APIを開発するためにSpring MVCを使っています
混乱している部分は、JAX-RSはRESTful Webサービス用のJava APIの略です。私はRESTful Webサービスの開発にもJavaを使用しています。 SpringはJAX-RS仕様に準拠していますか?
私が今まで知っていることから:
JAX-RSは---REST WebサービスをJavaで実装するための 仕様 で、現在は JSR-37 で定義されています。現在は JSR 366 で定義されている Java EE technologies の一部です。
Jersey (GlassFishおよびPayaraに同梱)はJAX-RS参照実装ですが、 RESTEasy (JBoss EAPおよびWildFlyに同梱)などの他の実装もあります Apache CXF (TomEEとWebSphereに同梱).
Spring Framework は フルフレームワーク で、これによりJavaエンタープライズアプリケーションを作成できます。 REST機能は Spring MVC モジュール(model-view-controllerを提供するモジュールと同じです能力)。これは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は spring-boot-starter-jersey
モジュールを提供します。これを使うと、Spring MVCの代わりにRESTエンドポイントにJAX-RSプログラミングモデルを使用できます。それはJersey 2.xと非常にうまくいきます。
Jersey 2.xとSpring Boot 1.4.xでWebアプリケーションを作成する完全な例については、これを参照してください。 answer 。
(2018年現在)Spring MVCは、そのソリューションがJAX-RSより前のものであるため、JAX-RSアノテーションに標準化されていません。同等物はここにある:
https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints
標準化されていないAPIを使用している場合、それらは推奨されなくなり、数年以内に新しい実験用APIに置き換えられる可能性があります。下位互換性への説明責任が少なくなります(たとえば、新しいJDKバージョンがリリースされたときなど)。
私はJersey Rest(スプリングレスト)とJersey Rest(スプリング付き)の両方で仕事をしました。どちらもNice実装の非常に豊富なフレームワークです。 ORM、Springセキュリティ、DIなどの他のSpringサービスを使用している場合は、Spring restを使用することをお勧めします。どちらもSpringライブラリなので、コードと依存関係の管理については少しエッセイを感じません。
JAX-RSの長所:
Spring MVCの長所:
REST機能だけでなく、 "フル"スタックを提供する
依存性注入/ AOP /トランザクション
プラガブルビューテンプレート(JSP、フリーマーカー、ベロシティなど)
あなたは以下のリンクでもっとチェックすることができます
JAX-RSが仕様で、ジャージなどがその実装です。 SpringはRestFul Webサービスを作成するためにSpringを使用しています。なぜなら、Springは休止中の統合やIOC、Aspect指向プログラミングなどの機能も提供するからです。
実装にjerseyを使用しているかのように、問題はいくつかのORMテクノロジを使用してデータをバックエンドから取得する必要があり、そのための定型コードを記述する必要がある場合です。
だからこそ、人々や企業でさえも、Springの機能を提供するRest実装と共にSpringを使っているのです。そして今、最新のSpringブート実装を使うことで、たくさんの設定なしで非常に速く開発を始めることができます。