JAX-RS
JAX-RS é uma especificação para implementar serviços da web REST em Java, atualmente definidos pelo JSR-370 . Faz parte das tecnologias Java EE , atualmente definidas pelo JSR 366 .
Jersey (enviada com GlassFish e Payara) é a implementação de referência JAX-RS, no entanto, existem outras implementações, como RESTEasy (fornecido com JBoss EAP e WildFly) e Apache CXF (enviado com TomEE e WebSphere).
Spring Framework
O Spring Framework é um framework completo que permite criar aplicativos corporativos Java. Os recursos REST são fornecidos pelo módulo Spring MVC (mesmo módulo que fornece recursos de modelo-visualização-controlador ). Não é uma implementação do JAX-RS e pode ser vista como uma alternativa do Spring ao padrão JAX-RS.
O ecossistema Spring também oferece uma ampla gama de projetos para a criação de aplicativos corporativos, abrangendo persistência, segurança, integração com redes sociais, processamento em lote, etc.
Exemplos
Considere o seguinte controlador de recursos usando a 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();
}
}
A implementação equivalente usando a API Spring MVC seria:
@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 e Jersey
O Spring Boot fornece o spring-boot-starter-jersey
módulo que permite usar o modelo de programação JAX-RS para os terminais REST em vez do Spring MVC. Funciona muito bem com o Jersey 2.x.
Para um exemplo completo de criação de um aplicativo Web com Jersey 2.xe Spring Boot 1.4.x, consulte esta resposta .