Spring MVC与JAX-RS比较与分析 - 编程入门网
Spring MVC与JAX-RS比较与分析时间:2011-10-22 infoq 译:张龙导言 过去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念。 现在有越来越多的公司希望能以简单而又贴合Web架构本身的方式公开Web API,因此REST变得越来越 重要也就不足为奇了。使用Ajax进行通信的富浏览器端也在朝这个目标不断迈进。这个架构原则提升了万 维网的可伸缩性,无论何种应用都能从该原则中受益无穷。 JAX-RS(JSR 311)指的是Java API for RESTful Web Services,Roy Fielding也参与了JAX-RS的制 订,他在自己的博士论文中定义了REST。对于那些想要构建RESTful Web Services的开发者来说,JAX-RS 给出了不同于JAX-WS(JSR-224)的另一种解决方案。目前共有4种JAX-RS实现,所有这些实现都支持 Spring,Jersey则是JAX-RS的参考实现,也是本文所用的实现。 如果你使用Spring进行开发,那可能想知道(或者有人曾问过你)Spring MVC与JAX-RS有何异同点? 更进一步,如果你手头有一个Spring MVC应用,使用了控制类继承(SimpleFormController等),你可能 还意识不到现在的Spring MVC对REST广泛的支持。 本文将介绍Spring 3中的REST特性并与JAX-RS进行对比,希望能帮助你理顺这两种编程模型之间的异 同点。 开始前,有必要指出JAX-RS的目标是Web Services开发(这与HTML Web应用不同)而Spring MVC的目 标则是Web应用开发。Spring 3为Web应用与Web Services增加了广泛的REST支持,但本文则关注于与Web Services开发相关的特性。我觉得这种方式更有助于在JAX-RS的上下文中讨论Spring MVC。 要说明的第二点是我们将要讨论的REST特性是Spring Framework的一部分,也是现有的Spring MVC编 程模型的延续,因此,并没有所谓的“Spring REST framework”这种概念,有的只是Spring和Spring MVC。这意味着如果你有一个Spring应用的话,你既可以使用Spring MVC创建HTML Web层,也可以创建 RESTful Web Services层。 关于文中的代码片段 文中的代码片段假想了一个简单的领域模型:两个JPA注解实体,分别是Account和Portfolio,其中一 个Account对应多个 Portfolio。持久层使用Spring配置,包含了一个JPA仓储实现,用于获取和持久化实 体实例。Jersey和Spring MVC用于构建Web Services层,通过调用底层的Spring托管应用来服务客户端请 求。 引导程序与Web层包装 我们会在Spring MVC和JAX-RS中都使用Spring实现依赖注入。Spring MVC DispatcherServlet和 Jersey SpringServlet会把请求代理给Spring管理的REST层组件(控制器或资源),后者会由业务或持久 层组件包装起来,如下图所示: Spring MVC与JAX-RS比较与分析(2)时间:2011-10-22 infoq 译:张龙Jersey和Spring MVC都使用Spring的ContextLoaderListener加载业务与持久层组件,比如 JpaAccountRepository:
ContextLoaderListener可用于任何Web或REST框架环境中。 在Jersey中创建Spring管理的JAX-RS资源 Jersey支持在REST层中使用Spring,两个简单的步骤就能搞定(事实上有3步,还需要将构建依赖加到 maven artifact com.sun.jersey.contribs:jersey-spring中)。 步骤一:将如下配置片段加到web.xml中以保证Spring能够创建JAX-RS根资源:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |