Saya bingung dengan perbedaan antara JAX-RS (well, mungkin harus menggunakan Jersey untuk melakukan perbandingan karena JAX-RS hanya spec) dan Spring for Restful services . Saya mencoba mencari lebih banyak informasi online dan itu menjadi lebih membingungkan. Perusahaan saya menggunakan Spring MVC untuk mengembangkan Restful APIs
Bagian yang membingungkan adalah, JAX-RS singkatan dari Java API untuk RESTful Web Services , di Spring saya juga menggunakan java untuk mengembangkan RESTful Web Services, jadi saya tidak benar-benar mendapatkan perbedaan. Apakah Spring mengikuti spesifikasi JAX-RS?
Dari apa yang saya ketahui sampai sekarang:
- JAX-RS adalah cetak biru / spesifikasi, memiliki Jersey, RESTeasy, dll sebagai implementasi.
spring-mvc
jersey
jax-rs
neraka
sumber
sumber
spring-webmvc
modul yang juga menyediakan model-view-controller Spring.Jawaban:
JAX-RS
JAX-RS adalah spesifikasi untuk mengimplementasikan layanan web REST di Jawa, yang saat ini ditentukan oleh JSR-370 . Ini adalah bagian dari teknologi Java EE , saat ini didefinisikan oleh JSR 366 .
Jersey (dikirim dengan GlassFish dan Payara) adalah implementasi referensi JAX-RS, namun ada implementasi lain seperti RESTEasy (dikirimkan dengan JBoss EAP dan WildFly) dan Apache CXF (dikirimkan dengan TomEE dan WebSphere).
Kerangka Pegas
The Spring Framework adalah kerangka kerja penuh yang memungkinkan Anda untuk membuat aplikasi perusahaan Java. Kemampuan REST disediakan oleh modul Spring MVC (modul yang sama yang menyediakan kemampuan model-view-controller ). Ini bukan implementasi JAX-RS dan dapat dilihat sebagai alternatif Spring untuk standar JAX-RS.
Ekosistem Spring juga menyediakan berbagai proyek untuk membuat aplikasi perusahaan, yang meliputi ketekunan, keamanan, integrasi dengan jejaring sosial, pemrosesan batch, dll.
Contohnya
Pertimbangkan pengontrol sumber daya berikut menggunakan API JAX-RS:
Implementasi yang setara menggunakan API Spring MVC adalah:
Menggunakan Spring Boot dan Jersey
Spring Boot menyediakan
spring-boot-starter-jersey
modul yang memungkinkan Anda menggunakan model pemrograman JAX-RS untuk titik akhir REST alih-alih Spring MVC. Ini bekerja cukup baik dengan Jersey 2.x.Untuk contoh lengkap membuat aplikasi web dengan Jersey 2.x dan Spring Boot 1.4.x, lihat jawaban ini .
sumber
Perbedaan anotasi
(Pada 2018) Spring MVC belum distandarisasi untuk anotasi JAX-RS, karena solusinya lebih dulu dari JAX-RS. Berikut adalah padanannya:
https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints
Jika Anda menggunakan API yang tidak terstandarisasi, Anda harus mengharapkannya tidak digunakan lagi dan mungkin digantikan oleh API eksperimental yang lebih baru dalam beberapa tahun. Ada jauh lebih sedikit akuntabilitas untuk kompatibilitas mundur (misalnya ketika versi JDK baru dirilis).
sumber
Saya bekerja dengan Jersey Rest, spring rest dan Jersey Rest dengan spring. Keduanya merupakan kerangka kerja yang sangat kaya dengan implementasi yang bagus. Saya akan menyarankan lebih baik untuk pergi dengan Spring rest jika Anda menggunakan layanan Spring lainnya seperti ORM, Spring security dan DI dll. Keduanya adalah spring library, jadi saya merasa sedikit mudah untuk mengelola kode dan dependensi
JAX-RS pro:
Pro musim semi MVC:
Berikan tumpukan "penuh", bukan hanya fasilitas REST
Injeksi ketergantungan / AOP / Transaksi
Templat tampilan Pluggable (JSP, freemarker, velocity, ...)
Anda dapat memeriksa lebih lanjut tentang tautan berikut
sumber
JAX-RS adalah spesifikasi dan jersey dll adalah implementasinya. Orang-orang menggunakan Spring untuk membuat RestFul web Services karena Spring bersama dengan implementasi yang tenang menyediakan hal-hal seperti integrasi hibernate dan juga hal-hal seperti IOC dan pemrograman berorientasi Aspect.
Sedangkan seolah-olah kita menggunakan jersey untuk implementasi, masalahnya adalah data harus diambil dari belakang menggunakan beberapa teknologi ORM dan kita harus menulis kode boilerplate untuk hal yang sama.
Itulah alasan orang dan bahkan perusahaan menggunakan pegas seiring dengan implementasi Istirahat itu juga menyediakan fasilitas Pegas. Dan sekarang menggunakan implementasi Spring boot terbaru kita dapat memulai pengembangan dengan sangat cepat tanpa banyak konfigurasi.
sumber