spring mvc - form - Diferencia entre JAX-RS y Spring Rest
spring mvc bootstrap login (4)
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 los servicios 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 relajantes
La parte confusa es que JAX-RS significa API de Java 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 proyecto / especificación, tiene implementaciones de Jersey, RESTeasy, etc.
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).
JAX-RS
JAX-RS es una specification 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, hay otras implementaciones como RESTEasy (incluido con JBoss EAP y WildFly) y Apache CXF (incluido con TomEE y WebSphere).
Spring Framework
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 modelo-vista-controlador ). No es una implementación JAX-RS y puede verse como una alternativa de Spring al stardard JAX-RS.
El ecosistema 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:
@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();
}
}
La implementación equivalente usando la API Spring MVC sería:
@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);
}
}
Usando Spring Boot y Jersey
Spring Boot proporciona el módulo
spring-boot-starter-jersey
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 answer .
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 Spring. Y ahora, utilizando la última implementación de arranque de Spring, podemos comenzar el desarrollo muy rápido sin muchas configuraciones.
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, así que me siento un poco ensayado para administrar el código y las dependencias.
Profesionales de JAX-RS:
- El estándar JSR se puede ejecutar sin contenedor de servlet (grizzly, simple, ...)
- Implementaciones listas para producción (jersey, cxf, resteasy, restlet, ...) diseñadas solo para aplicaciones REST
Spring MVC pros:
-
Proporcione una 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