JAX-RS
JAX-RS是用于以Java实现REST Web服务的规范,当前由JSR-370定义。它是JSR 366当前定义的Java EE技术的一部分。
Jersey(随GlassFish和Payara一起提供)是JAX-RS参考实现,但是还有其他实现,例如RESTEasy(随JBoss EAP和WildFly提供)和 Apache CXF(由TomEE和WebSphere附带)。
春季框架
在Spring框架是一个完整的框架,它允许你创建Java企业应用程序。REST功能由Spring MVC模块提供(同一模块提供模型视图控制器功能)。它不是JAX-RS的实现,可以看作是JAX-RS标准的Spring替代方案。
Spring生态系统还提供了用于创建企业应用程序的广泛项目,涉及持久性,安全性,与社交网络的集成,批处理等。
例子
考虑使用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应用程序的完整示例,请参考此答案。