猿问

我可以使用@Context注释注入哪些对象?

我是JAX-RS的新手,我试图了解@Context注释的工作方式。


在javadoc的有六类(列表Application,UriInfo,Request,HttpHeaders,SecurityContext,Providers)。但是,我在网络上找到将this注释与其他类型一起使用的代码,例如:


@GET

public String something(@Context HttpServletRequest req) {


}

是否有可以与此注释一起使用的受支持类型的列表?在执行标准之间,此列表是否会更改?


我目前正在试验Jersey,我担心自己写的代码无法移植到其他JAX-RS实现中。


繁花如伊
浏览 3131回答 3
3回答

斯蒂芬大帝

铆接的JAX-RS 规范定义了您可以通过注入的所有标准类型@Context。但是,如果我是您,我将只咨询您选择的提供者的特定文档,以查看可用的内容。例如,RESTEasy 通过提供这些值@Context。同时,泽西岛提供了这些。显然,由于标准的上下文值,将存在重叠。

一只甜甜圈

@Context批注可用于注入12个对象。这是它们每个的快速摘要HttpHeaders-HTTP标头值和参数UriInfo-URI查询参数和路径变量SecurityContext-为给定的HTTP请求提供对与安全性有关的数据的访问请求-允许前提条件请求处理ServletConfig-ServletConfigServletContext-ServletContextHttpServletRequest-请求的HttpServletRequest实例HttpServletResponse-HttpServletResponse实例应用程序,配置和提供程序->提供有关JAX-RS应用程序,配置和提供程序的信息ResourceContext-提供对资源类实例的访问所有这些实例都可以注入资源方法中@Path("/")public class EndpointResource {  @GET  @Produces(MediaType.APPLICATION_JSON)  public Response getAllHttpHeaders(final @Context HttpHeaders httpHeaders){      // Code here that uses httpHeaders  }}或作为字段:@Path("/")public class EndpointResource {  private final @Context HttpHeaders httpHeaders;  @GET  @Produces(MediaType.APPLICATION_JSON)  public Response getAllHttpHeaders(){      // Code here that uses httpHeaders  }}
随时随地看视频慕课网APP

相关分类

Java
我要回答