Confundí con la diferencia entre JAX-RS (bueno, tal vez debería usar Jersey para hacer una comparación, ya que JAX-RS es solo una especificación) y Spring for Restful . Traté de buscar más información en línea y se volvió más confuso. Mi empresa está utilizando Spring MVC para desarrollar API de Restful
La parte confusa es que JAX-RS significa Java API para RESTful Web Services , en Spring también estoy usando java para desarrollar RESTful Web Services, por lo que no entiendo las diferencias. ¿Spring sigue las especificaciones JAX-RS?
Por lo que sé hasta ahora:
- JAX-RS es un plan / especificación, tiene implementaciones de Jersey, RESTeasy, etc.
spring-mvc
jersey
jax-rs
infierno
fuente
fuente
spring-webmvc
módulo que también proporciona el controlador de vista de modelo de Spring.Respuestas:
JAX-RS
JAX-RS es una especificación para implementar servicios web REST en Java, actualmente definida por el JSR-370 . Forma parte de las tecnologías Java EE , actualmente definidas por el JSR 366 .
Jersey (incluido con GlassFish y Payara) es la implementación de referencia JAX-RS, sin embargo, existen otras implementaciones como RESTEasy (incluido con JBoss EAP y WildFly) y Apache CXF (incluido con TomEE y WebSphere).
Spring Framework
El Spring Framework es un marco completo que le permite crear aplicaciones empresariales Java. Las capacidades REST son proporcionadas por el módulo Spring MVC (mismo módulo que proporciona capacidades de modelo-vista-controlador ). No es una implementación JAX-RS y puede verse como una alternativa de Spring al estándar JAX-RS.
El ecosistema de Spring también proporciona una amplia gama de proyectos para crear aplicaciones empresariales, que abarcan la persistencia, la seguridad, la integración con las redes sociales, el procesamiento por lotes, etc.
Ejemplos
Considere el siguiente controlador de recursos que utiliza la API JAX-RS:
La implementación equivalente usando la API Spring MVC sería:
Usando Spring Boot y Jersey
Spring Boot proporciona el
spring-boot-starter-jersey
módulo que le permite utilizar el modelo de programación JAX-RS para los puntos finales REST en lugar de Spring MVC. Funciona bastante bien con Jersey 2.x.Para obtener un ejemplo completo de cómo crear una aplicación web con Jersey 2.xy Spring Boot 1.4.x, consulte esta respuesta .
fuente
Diferencias de anotación
(A partir de 2018) Spring MVC no se ha estandarizado para las anotaciones JAX-RS, ya que su solución es anterior a JAX-RS. Aquí están los equivalentes:
https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints
Si está utilizando API no estandarizadas, debe esperar que sean obsoletas y posiblemente reemplazadas por una API experimental más nueva en unos pocos años. Hay mucha menos responsabilidad por la compatibilidad con versiones anteriores (por ejemplo, cuando se lanzan nuevas versiones de JDK).
fuente
Trabajé con Jersey Rest, spring rest y Jersey Rest con spring. Ambos son marcos muy ricos con implementaciones agradables. Sugeriría que es mejor ir con Spring rest si está utilizando otros servicios de Spring como ORM, Spring security y DI, etc. Ambas son bibliotecas de Spring, por lo que me siento un poco fácil para administrar el código y las dependencias.
Profesionales de JAX-RS:
Spring MVC pros:
Proporcionar pila "completa", no solo instalaciones REST
Inyección de dependencias / AOP / Transacciones
Plantillas de vista conectables (JSP, freemarker, velocidad, ...)
Puedes consultar más en los siguientes enlaces
fuente
JAX-RS es la especificación y jersey, etc. son su implementación. La gente usa Spring para hacer servicios web RestFul porque porque Spring junto con una implementación tranquila proporciona cosas como la integración de hibernación y también cosas como IOC y programación orientada a Aspect.
Donde, como si usáramos jersey para nuestra implementación, el problema será que los datos deben recuperarse desde el back-end utilizando algunas tecnologías ORM y tendremos que escribir código repetitivo para el mismo.
Esa es la razón por la cual las personas e incluso las empresas usan Spring, ya que junto con la implementación de Rest también proporciona instalaciones de Spring. Y ahora, utilizando la última implementación de arranque de Spring, podemos comenzar el desarrollo muy rápido sin muchas configuraciones.
fuente