1.概述
在本教程中,我们将看到JAX-RS和用于REST API开发的Spring MVC之间的区别。
2. Jakarta RESTful Web服务
要成为JAVA EE世界的一部分,功能必须具有规范,兼容的实现和TCK 。因此, JAX-RS**是用于构建REST服务的一组规范。它最著名的参考实现是RESTEasy和Jersey** 。
现在,让我们通过实现一个简单的控制器来熟悉Jersey:
@Path("/hello")
public class HelloController {
@GET
@Path("/{name}")
@Produces(MediaType.TEXT_PLAIN)
public Response hello(@PathParam("name") String name) {
return Response.ok("Hello, " + name).build();
}
}
在上方,端点返回一个简单的“文本/纯文本”响应,作为注释@Produces
状态。特别是,我们公开了一个hello
HTTP资源,该资源接受带有两个@Path
批注的name
我们还需要使用注释@GET
来指定它是一个GET
请求。
3.带有Spring MVC的REST
Spring MVC是Spring Framework的模块,用于创建Web应用程序。它为REST框架添加了REST功能。
让我们使用Spring MVC制作与上述相同的GET
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping(value = "/{name}", produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<?> hello(@PathVariable String name) {
return new ResponseEntity<>("Hello, " + name, HttpStatus.OK);
}
}
通过查看代码,@ @RequestMapping
指出我们正在处理一个hello
HTTP资源。特别是,通过@GetMapping
批注,我们将其指定为GET
请求。它接受名为name
的参数,并返回“文本/纯文本”响应。
4.差异
JAX-RS依赖于提供一组Java注释并将其应用于纯Java对象。的确,这些注释有助于我们抽像出客户端与服务器之间通信的底层细节。为了简化其实现,它提供了注释来处理HTTP请求和响应,并将其绑定到代码中。 JAX-RS只是一个规范,它需要使用兼容的实现。
另一方面, Spring MVC**是具有REST功能的完整框架**。像JAX-RS一样,它也为我们提供了有用的注释,以从底层细节中抽像出来。它的主要优势是成为Spring Framework生态系统的一部分。因此,它允许我们像其他任何Spring模块一样使用依赖注入。此外,它可轻松与Spring AOP,Spring Data REST和Spring Security等其他组件集成。
5.结论
在这篇快速文章中,我们研究了JAX-RS和Spring MVC之间的主要区别。
0 评论