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:
@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 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 .