Différence entre le JAX-RS et le repos du ressort

j'ai confondu avec la différence entre JAX-RS (Eh bien, peut-être devrait utiliser Jersey pour faire la comparaison depuis JAX-RS est juste spec) et Spring for Restful services . J'ai essayé de chercher plus d'informations en ligne et c'est devenu plus confus. Mon entreprise est à l'aide de Spring MVC pour développer Restful Api

la partie confuse est, JAX-RS signifie API Java pour les services web RESTful , au printemps je suis aussi en utilisant java pour développer des Services web RESTful, donc je ne comprends pas vraiment les différences. Le ressort est-il conforme aux spécifications JAX-RS?

D'après ce que je sais jusqu'à présent:

  1. JAX-RS est un modèle/Spécification, il a Jersey, RESTeasy, etc comme implémentations.
58
demandé sur hades 2017-03-22 10:01:04

4 réponses

JAX-RS

JAX-RS est une spécification pour la mise en œuvre des services REST web en Java, actuellement défini par le JSR-370 . Il fait partie du Java EE technologies , actuellement défini par le JSR 366 .

Jersey (expédié avec GlassFish et Payara) est la mise en œuvre de référence JAX-RS, mais il existe d'autres implémentations telles que RESTEasy (livré avec JBoss EAP et WildFly) et Apache CXF (livré avec TomEE et WebSphere).

Spring

le Spring Framework est un full framework qui vous permet de créer des applications D'entreprise Java. Les possibilités de repos sont fournies par le module MVC à ressort (même module "fournit des 1519320920" modèle-vue-contrôleur "1519330920 de capacités"). Il ne s'agit pas d'une implémentation JAX-RS et peut être considéré comme une alternative de printemps au JAX-RS stardard.

Le Printemps de l'écosystème fournit également un large éventail de projets pour la création d'applications d'entreprise, couvrant la persistance, la sécurité, l'intégration avec les réseaux sociaux, le traitement par lots, etc.

Exemples

considérer le suivant le contrôleur de ressources utilisant L'API JAX-RS:

@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();
    }
}

l'implémentation équivalente utilisant L'API MVC de printemps serait:

@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);
    }
}

utilisant une botte à ressort et un chandail

fournit le module spring-boot-starter-jersey qui vous permet d'utiliser le modèle de programmation JAX-RS pour les points D'extrémité REST au lieu de ressort MVC. Ça marche plutôt bien avec Jersey 2.x.

pour un exemple complet de création d'une application web avec Jersey 2.X et botte à ressort 1.4.x, référez-vous à cette réponse .

71
répondu Cassio Mazzochi Molin 2017-11-27 13:22:50

j'ai travaillé avec Jersey Rest, spring rest et Jersey Rest avec spring. Tous les deux sont des cadres très riches avec de belles implémentations. Je suggère qu'il est préférable d'aller avec Spring rest si vous utilisez d'autres services de ressort tels que ORM ,Spring security et DI etc. Les deux sont des bibliothèques de printemps donc je me sens un peu essai pour gérer le code et les dépendances

JAX-RS pros:

  • la norme JSR peut être course sans container servlet (grizzly, simple, ...)
  • mises en œuvre prêtes à la Production (jersey, cxf, resteasy, restlet), ...) conçu pour les applications de repos seulement

Spring MVC pros:

  • Fournir "plein" de la pile, pas seulement des installations de REPOS

  • de l'injection de Dépendances / AOP / Transactions

  • modèles de vue (JSP, freemarker, velocity, ...)

vous pouvez en savoir plus sur les liens suivants ""

  1. https://www.infoq.com/articles/springmvc_jsx-rs
  2. Pourquoi utiliser JAX-RS / Jersey?
12
répondu Midhun Pottammal 2017-11-08 12:31:20

différences D'Annotation

(en date de 2018) Spring n'a pas normalisé aux annotations JAX-RS, puisque sa solution est antérieure à JAX-RS. Voici les équivalents:

enter image description here

https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints

si vous utilisez des IPA non normalisés, vous devez vous attendre à ce qu'ils soient dépréciés et éventuellement remplacée par une nouvelle API expérimentale dans quelques années. Il y a beaucoup moins de responsabilité envers la rétrocompatibilité (par exemple quand une nouvelle version JDK est publiée).

9
répondu Sridhar-Sarnobat 2018-08-14 05:21:08

JAX-RS est la spécification et jersey etc sont son application. Les gens utilisent le printemps pour faire des services web reposants comme parce que le printemps avec la mise en œuvre reposants fournit des choses comme l'intégration d'hibernation et aussi des choses comme le CIO et la programmation orientée vers L'Aspect .

où comme si nous utilisons jersey pour notre mise en œuvre, le problème sera que les données doivent être récupérées à partir de la fin de l'utilisation de certaines technologies ORM et nous devrons écrire le code de boilerplate pour la même.

C'est la raison pour laquelle les gens et même les entreprises utilisent le printemps car avec la mise en œuvre de repos il fournit des installations de printemps aussi . Et maintenant, en utilisant la dernière implémentation de la botte de printemps, nous pouvons commencer le développement très rapidement sans beaucoup de configurations.

4
répondu Rahul Singh 2017-03-22 07:10:58