JAX-RS
JAX-RS 是一个 specification,用于在 Java 中实现 REST Web 服务,目前由 JSR-370 定义。它是Java EE technologies 的一部分,目前由JSR 366 定义。
Jersey(随 GlassFish 和 Payara 提供)是 JAX-RS 参考实现,但是还有其他实现,例如 RESTEasy(随 JBoss EAP 和 WildFly 提供)和 Apache CXF(随 TomEE 和 WebSphere 提供) .
Spring 框架
Spring Framework 是一个full framework,它允许您创建 Java 企业应用程序。 REST 功能由Spring MVC 模块(提供model-view-controller 功能的同一模块)提供。它不是 JAX-RS 实现,可以看作是 JAX-RS 标准的 Spring 替代方案。
Spring 生态系统还提供wide range of projects 用于创建企业应用程序,涵盖持久性、安全性、与社交网络的集成、批处理等。
示例
考虑使用 JAX-RS API 的以下资源控制器:
@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();
}
}
使用 Spring MVC API 的等效实现是:
@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);
}
}
使用 Spring Boot 和 Jersey
>
Spring Boot 提供了spring-boot-starter-jersey 模块,允许您将 JAX-RS 编程模型用于 REST 端点而不是 Spring MVC。它适用于 Jersey 2.x。
有关使用 Jersey 2.x 和 Spring Boot 1.4.x 创建 Web 应用程序的完整示例,请参阅answer。