web-dev-qa-db-fra.com

Quelle est la différence entre le service Spring Rest et les solutions Jersey Rest Service et Spring + Jersey?

Je veux créer un service/API reposant. J'ai utilisé un cadre comme play pour le construire, mais je veux essayer d'autres moyens plus efficaces. J'ai entendu dire que Jersey est une bibliothèque commune pour la construction de l'API de repos, et Spring est également un bon cadre. Mais j'ai aussi vu des solutions comme Spring + Jersey. Ainsi, je suis un peu confus au sujet de ces solutions d'API de repos.

Quelqu'un peut-il me dire quelle est la différence entre ceux-ci? Jersey REST, Spring Rest et Spring + Jersey Rest?

Mon objectif est de créer quelques API de repos qui prennent json comme entrée/sortie. J'ai un fichier jar comme logique de processus backend pour traiter l'entrée json/object et retourner json/object.

merci beaucoup.

32
Terry

Jersey est l'implémentation d'exemple d'API JAX-RS fournie par Sun, tandis que Spring REST est bien sûr l'implémentation de Spring des mêmes API/JSR. La principale différence est que Spring REST s'intègre facilement dans d'autres API Spring (si vous le souhaitez) telles que Spring Data Rest .

Il y a quelques différences notables entre eux - vous pouvez "incorporer" les ressources Jersey (connues au printemps sous le nom de Contrôleurs ) les uns dans les autres, pour activer une classe distincte qui est responsable du sous-chemin d'un certain chemin, alors que cela ne semble pas être disponible dans Spring en ce moment (vous devez définir le chemin complet). De plus, à mon avis, Jersey donne de meilleures réponses d'erreur "prêtes à l'emploi" (comme pourquoi il ne peut pas mapper une charge utile JSON à un Java utilisant Jackson) tandis que Spring est un peu plus configurable mais plus clair sans travail supplémentaire.

En fin de compte, la différence de choix entre les deux se résume généralement à - êtes-vous déjà ou prévoyez-vous d'intégrer d'autres bibliothèques Spring dans votre application? Si c'est le cas, Spring REST est la voie à suivre, car vous aurez beaucoup plus de facilité à l'intégrer, sinon c'est vraiment juste une préférence personnelle que vous préférez utiliser. Personnellement, j'aime Jersey mais la puissance d'autres projets Spring associés (tels que Spring HATEOAS que je recommande fortement) fait de Spring le meilleur choix. Je ne pense pas qu'il y aura un véritable facteur déterminant dans votre cas.

Comme votre cible "or" est une API simple avec entrée/sortie JSON, je vous recommande de suivre le Spring REST guide .

28
Ross Taylor-Turner

Une différence majeure réside dans le domaine du support des tests unitaires.

Jersey Test Framework ne se prête pas à la moquerie du code côté serveur - Par exemple, si votre REST ressource dépendait d'un service, vous souhaitez vous moquer du service lors des tests Cependant, les tests Jersey exécutent un conteneur distinct et les tests unitaires font des appels à l'instance en cours d'exécution de votre ressource REST - à ce stade, je n'ai trouvé aucune documentation ni aucun moyen pour se moquer du code côté serveur.

Au contraire, tests Spring MVC ne nécessitent aucun conteneur - et sont mieux intégrés à ses contrôleurs. L'injection de dépendance peut être utilisée pour injecter des services fictifs/DAO afin d'avoir de meilleurs tests unitaires.

Je trouve également que la documentation sur les projets Spring est plus mature que celle de Jersey.

6
Wand Maker