zoukankan      html  css  js  c++  java
  • 关于使用spring mvc或者resteasy构建restful服务的差别与比较

    resteasy 是 jboss的一个开源java api for restful service(JSR 311,sun 2008年发布,最新GA版本是2.0, JAX-RS 2.0 (JSR-339) and JAX-RS 1.1 (JSR-311))实现参考,其他的还包括Jersey(sun提供的参考实现)。本文假设读者熟悉spring mvc,但是不了解或者没有使用过resteasy的用户。

    其实一直以来,笔者实际都是使用spring mvc,对于研究resteasy没有兴趣。至于最近研究resteasy,纯属因为现在公司使用dubbox作为rpc框架,而dubbox使用resteasy作为REST实现库。

    简单地说,resteasy核心就是一个servlet前端控制器,理念都一样。

    应该来说,resteasy的优势在于相比spring mvc而言,更加的专注,简单。就大型应用而言,绝对是spring mvc占据优势。

    就简洁性而言,应该来说在spring 4.0引入spring restcontroller之后,优势就没有那么明显了,应该来说3.2之前对restful还不那么有信心。

    就像我们现在发现基本上mvc上spring mvc占据了绝大部分的新项目,估计以后resteasy也会小众化。

    至于说resteasy为什么活下来,感觉上spring社区有个比较明显的倾向就是好像不怎么吃螃蟹,等到趋势比较明朗之后,要么就整合对方,要么就强行自己引入一套接口玩死对方。

    resteasy是JAX-RS的参考实现之一,规范制定者是核心人员之一,所以概念和属于上基本上完全各种restful service教材上能够直接对应。spring mvc方面,就没有那么直接的对应了,估计是鄙视J2EE的一种商业手法。

    就应用而言,如果restful作为rpc的实现机制,resteasy应该是有优势的,毕竟集成没有spring mvc那么多配置(当然spring cloud除外),但作为应用,估计干不过spring mvc。

    使用resteasy,最好使用servlet 3.0以上的容器,比如tomcat 7+。

    resteasy, 主要有三个核心依赖包:

    <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>${resteasy.version}</version>
    </dependency>
    <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxb-provider</artifactId>
    <version>${resteasy.version}</version>
    </dependency>

    <dependency>

    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-servlet-initializer</artifactId>
    <version>${resteasy.version}</version>
    </dependency>

    如此配置的话,Resteasy会使用ServletContainerInitializer初始化应用,自动扫描资源和暴露的服务。resteasy全局的一些配置参数可以通过web.xml中的<context-param>进行传递。关键的配置包括如下:

    resteasy.servlet.mapping.prefix:设置Resteasy servlet映射的url匹配模式,默认为/*。

    一般来说,使用resteasy的web.xml配置为:

    <servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/restful-services/*</url-pattern>
    </servlet-mapping>

    <context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/restful-services</param-value>
    </context-param>

    如果要使用resteasy作为restful service的客户端框架的话,最少需要以下依赖:

    <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>${resteasy.version}</version>
    </dependency>
    <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-client</artifactId>
    <version>${resteasy.version}</version>
    </dependency>

    常用的注解并不是很多,主要包括:

    @Path

    @GET

    @POST

    @PathParam

    @QueryParam

    @HeaderParam

    @CookieParam

    @FormParam

    @DefaultValue

    @Context

    常用功能部分还是比较简单的,可以参考官方文档,应该一两天足够熟悉了。

    javadoc可参考http://docs.jboss.org/resteasy/docs/3.0.22.Final/javadocs/index.html。

  • 相关阅读:
    Linux防火墙--iptables学习
    LVS持久化
    LVS管理工具--ipvsadm
    Linux负载均衡--LVS(IPVS)
    一步步学习python
    驱动工程师需要的技能
    红外图像盲元补偿matlab实现源码与效果验证
    红外图像非均匀矫正——两点矫正
    夏日炎炎 python写个天气预报
    解决OV系列摄像头寄存器读数据无法收到的问题
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6883417.html
Copyright © 2011-2022 走看看