gpt4 book ai didi

spring-mvc - JAX-RS 和 Spring Rest 之间的区别

转载 作者:行者123 更新时间:2023-12-03 04:38:21 24 4
gpt4 key购买 nike

我对JAX-RS(好吧,也许应该使用Jersey进行比较,因为JAX-RS只是规范)和Spring for Restful服务之间的区别感到困惑。我试图在网上搜索更多信息,结果变得更加困惑。我的公司正在使用 Spring MVC 开发 Restful API

令人困惑的部分是,JAX-RS代表Java API for RESTful Web Services,在Spring中我也使用java来开发RESTful Web Services,所以我实际上并没有意识到其中的区别。 Spring 是否遵循 JAX-RS 规范?

据我所知到目前为止:

  1. JAX-RS 是一个蓝图/规范,它有 Jersey、RESTeasy 等实现。

最佳答案

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 Frameworkfull framework它允许您创建 Java 企业应用程序。 REST 功能由 Spring MVC 提供模块(提供 Model View Controller 功能的同一模块)。它不是 JAX-RS 实现,可以视为 JAX-RS 标准的 Spring 替代方案。

Spring生态系统还提供了wide range of projects用于创建企业应用程序,涵盖持久性、安全性、与社交网络的集成、批处理等。

示例

考虑使用 JAX-RS API 的以下资源 Controller :

@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模块允许您对 REST 端点使用 JAX-RS 编程模型而不是 Spring MVC。它与 Jersey 2.x 配合得很好。

有关使用 Jersey 2.x 和 Spring Boot 1.4.x 创建 Web 应用程序的完整示例,请参阅此 answer .

关于spring-mvc - JAX-RS 和 Spring Rest 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42944777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com