当前位置:  开发笔记 > 后端 > 正文

JAX-RS和Spring Rest之间的区别

如何解决《JAX-RS和SpringRest之间的区别》经验,为你挑选了4个好方法。

我混淆了JAX-RS之间的区别(好吧,也许应该使用Jersey进行比较,因为JAX-RS只是规范)和Spring for Restful服务.我试图在网上搜索更多信息,它变得更加混乱.我的公司正在使用Spring MVC来开发Restful API

令人困惑的部分是,JAX-RS代表用于RESTful Web服务的Java API,在Spring中我也使用java来开发RESTful Web服务,所以我实际上并没有得到差异.Spring是否遵循JAX-RS规范?

据我所知,直到现在:

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

cassiomolin.. 121

JAX-RS

JAX-RS是用Java实现REST Web服务的规范,目前由JSR-370定义.它是Java EE技术的一部分,目前由JSR 366定义.

Jersey(随GlassFish和Payara一起提供)是JAX-RS参考实现,但是还有其他实现,例如RESTEasy(随JBoss EAP和WildFly一起提供)和Apache CXF(随TomEE和WebSphere一起提供).

Spring框架

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

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



1> cassiomolin..:

JAX-RS

JAX-RS是用Java实现REST Web服务的规范,目前由JSR-370定义.它是Java EE技术的一部分,目前由JSR 366定义.

Jersey(随GlassFish和Payara一起提供)是JAX-RS参考实现,但是还有其他实现,例如RESTEasy(随JBoss EAP和WildFly一起提供)和Apache CXF(随TomEE和WebSphere一起提供).

Spring框架

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

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



2> Sridhar Sarn..:
注释差异

(截至2018年)Spring没有标准化为JAX-RS注释,因为它的解决方案早于JAX-RS.以下是等价物:

在此输入图像描述

https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints

如果您使用的是非标准化的API,您应该会在几年内推荐使用它们,并且可能会被更新的实验API取代.向后兼容性的责任要少得多(例如,当新的JDK版本发布时).



3> Midhun Potta..:

春天,我和泽西休息,春季休息和泽西休息一起工作.它们都是非常丰富的框架,具有很好的实现.如果您使用其他Spring服务,如ORM,Spring安全性和DI等,我建议最好使用Spring休息.两者都是spring库,所以我觉得有点文章来管理代码和依赖项

JAX-RS专业人士:

JSR标准可以在没有servlet容器的情况下运行(灰熊,简单......)

生产就绪的实现(jersey,cxf,resteasy,restlet,...)仅适用于REST应用程序

Spring MVC专业人士:

提供"完整"堆栈,而不仅仅是REST工具

依赖注入/ AOP /交易

可插拔视图模板(JSP,freemarker,velocity,...)

您可以在以下链接中查看更多信息

    https://www.infoq.com/articles/springmvc_jsx-rs

    为什么要使用JAX-RS/Jersey?


但是,JAX-RS也可以用于Spring(用于DI,AOP,......).

4> Rahul Singh..:

JAX-RS是其规格,球衣等是其实现。人们之所以使用Spring来制作RestFul Web服务,是因为Spring与宁静的实现一起提供了诸如休眠集成之类的功能,还提供了诸如IOC和面向方面的编程之类的功能。

好像我们使用jersey来实现一样,问题是必须使用某些ORM技术从后端获取数据,并且我们必须为此编写样板代码。

这就是人们甚至企业使用Spring以及Rest实现的原因,它也提供了Spring设施。现在,使用最新的Spring引导实现,我们可以快速进行开发,而无需进行大量配置。

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有