J'ai confondu avec la différence entre JAX-RS (enfin, je devrais peut-être utiliser Jersey pour faire la comparaison puisque JAX-RS n'est que des spécifications) et Spring for Restful services . J'ai essayé de rechercher plus d'informations en ligne et cela devient plus déroutant. Mon entreprise utilise Spring MVC pour développer des API Restful
La partie déroutante est que JAX-RS signifie Java API pour RESTful Web Services , au printemps, j'utilise également java pour développer des services Web RESTful, donc je ne comprends pas vraiment les différences. Spring suit-il les spécifications JAX-RS?
De ce que je sais jusqu'à maintenant:
- JAX-RS est un plan / spécification, il a Jersey, RESTeasy, etc. comme implémentations.
spring-mvc
jersey
jax-rs
Enfers
la source
la source
spring-webmvc
module qui fournit également le contrôleur de vue de modèle de Spring.Réponses:
JAX-RS
JAX-RS est une spécification pour l'implémentation de services Web REST en Java, actuellement définie par le JSR-370 . Il fait partie des technologies Java EE , actuellement définies par le JSR 366 .
Jersey (livré avec GlassFish et Payara) est l'implémentation 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).
Cadre de printemps
Le Spring Framework est un cadre complet qui vous permet de créer des applications Java d'entreprise. Les fonctionnalités REST sont fournies par le module Spring MVC (le même module qui fournit des fonctionnalités de contrôleur de vue de modèle ). Ce n'est pas une implémentation JAX-RS et peut être considéré comme une alternative Spring à la norme JAX-RS.
L'écosystème Spring propose également un large éventail de projets de création d'applications d'entreprise, couvrant la persistance, la sécurité, l'intégration aux réseaux sociaux, le traitement par lots, etc.
Exemples
Considérez le contrôleur de ressources suivant à l'aide de l'API JAX-RS:
L'implémentation équivalente utilisant l'API Spring MVC serait:
Utilisation de Spring Boot et Jersey
Spring Boot fournit le
spring-boot-starter-jersey
module qui vous permet d'utiliser le modèle de programmation JAX-RS pour les points de terminaison REST au lieu de Spring MVC. Cela fonctionne assez bien avec Jersey 2.x.Pour un exemple complet de création d'une application Web avec Jersey 2.x et Spring Boot 1.4.x, reportez-vous à cette réponse .
la source
Différences d'annotation
(À partir de 2018) Spring MVC ne s'est pas normalisé aux annotations JAX-RS, car sa solution est antérieure à JAX-RS. Voici les équivalents:
https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints
Si vous utilisez des API non standardisées, vous devez vous attendre à ce qu'elles soient obsolètes et éventuellement remplacées par une API expérimentale plus récente dans quelques années. Il y a beaucoup moins de responsabilité en matière de compatibilité descendante (par exemple, lorsqu'une nouvelle version de JDK est publiée).
la source
J'ai travaillé avec Jersey Rest, Spring Rest et Jersey Rest with Spring. Les deux sont des frameworks très riches avec de belles implémentations. Je suggérerais qu'il est préférable d'utiliser Spring Rest si vous utilisez d'autres services Spring tels que ORM, Spring Security et DI, etc. Les deux sont des bibliothèques Spring, donc je me sens un peu facile pour gérer le code et les dépendances
Avantages du JAX-RS:
Avantages de Spring MVC:
Fournir une pile «complète», pas seulement des installations REST
Injection de dépendances / AOP / Transactions
Modèles de vue enfichables (JSP, freemarker, vélocité, ...)
Vous pouvez en savoir plus sur les liens suivants
la source
JAX-RS est la spécification et le maillot, etc. sont sa mise en œuvre. Les gens utilisent Spring pour créer des services Web RestFul, car Spring avec une implémentation reposante fournit des éléments tels que l'intégration de la mise en veille prolongée et également des éléments tels que la programmation orientée IOC et Aspect.
Là où, comme si nous utilisions jersey pour notre implémentation, le problème sera que les données doivent être extraites du back-end en utilisant certaines technologies ORM et nous devrons écrire un code standard pour le même.
C'est la raison pour laquelle les gens et même les entreprises utilisent Spring, car avec l'implémentation Rest, il fournit également des installations Spring. Et maintenant, en utilisant la dernière implémentation de Spring Boot, nous pouvons commencer le développement très rapidement sans beaucoup de configurations.
la source