快速业务通道

Spring MVC与JAX-RS比较与分析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
   <servlet-name>Jersey Web Application</servlet-name>    <servlet-class>      com.sun.jersey.spi.spring.container.servlet.SpringServlet    </servlet-class> </servlet> <servlet-mapping>    <servlet-name>Jersey Web Application</servlet-name>    <url-pattern>/resources/*</url-pattern> </servlet-mapping>

步骤二:使用Spring和JAX-RS注解声明根JAX-RS资源类:

@Path("/accounts/") @Component @Scope("prototype") public class AccountResource {    @Context    UriInfo uriInfo;    @Autowired    private AccountRepository accountRepository; }

Spring MVC与JAX-RS比较与分析(3)

时间:2011-10-22 infoq 译:张龙

如下是对这些注解的说明:

@Component将AccountResource声明为Spring bean。

@Scope声明了一个prototype Spring bean,这样每次使用时都会实例化(比如每次请求时)。

@Autowired指定了一个AccountRepository引用,Spring会提供该引用。

@Path是个JAX-RS注解,它将AccountResource声明为“根”JAX-RS资源。

@Context也是一个JAX-RS注解,要求注入特定于请求的UriInfo对象。

JAX-RS有“根”资源(标记为@Path)和子资源的概念。在上面的示例中,AccountResource就是个根 资源,它会处理以 “/accounts/”开头的路径。AccountResource中的方法如getAccount()只需声明针对 类型级别的相对路径即可。

@Path("/accounts/") @Component @Scope("prototype") public class AccountResource {    @GET    @Path("{username}")    public Account getAccount(@PathParam("username") String username) {    } }

访问路径“/accounts/{username}”(其中的username是路径参数,可以是某个账户的用户名)的请 求将由getAccount()方法处理。

根资源由JAX-RS运行时(在本示例中是Spring)实例化,子资源则由应用本身实例化。比如说,对于 “/accounts /{username}/portfolios/{portfolioName}”这样的请求,AccountResource(由路径的第 一部分“ /accounts”标识)会创建一个子资源实例,请求会被代理给该实例:

@Path("/accounts/") @Component @Scope("prototype") public class AccountResource {    @Path("{username}/portfolios/")    public PortfolioResource getPortfolioResource(@PathParam("username") String  username) {      return new PortfolioResource(accountRepository, username, uriInfo);    } }

PortfolioResource本身的声明并没有使用注解,因此其所有的依赖都是由父资源传递过来的:

public class PortfolioResource {    private AccountRepository accountRepository;    private String username;    private UriInfo uriInfo;    public PortfolioResource(AccountRepository accountRepository, String  username, UriInfo uriInfo) {      this.accountRepository = accountRepository;      this.username = username;      this.uriInfo = uriInfo;    } }

Spring MVC与JAX-RS比较与分析(4)

时间:2011-10-22 infoq 译:张龙

JAX-RS中的根与子资源创建了一个处理链,它会调用多个资源:

请记住,资源类是Web Services层组件,应当关注于Web Services相关

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号