java spring注解配置 - 我可以使用@Context注释注入哪些对象?




2 Answers

铆接JAX-RS specification定义了您可以通过@Context注入的所有标准类型。

但如果我是你,我会查阅你选择的提供商的具体文件,看看有什么可用。

例如,RESTEasy通过@Context提供这些值 。 同时,泽西提供these 。 由于标准的上下文值,显然会有重叠。

boot构造器注入 java注解

我是JAX-RS的新手,我试图理解@Context注释应该如何工作。

javadoc有一个包含六个类的列表( ApplicationUriInfoRequestHttpHeadersSecurityContextProviders )。 但是我在Web上找到了使用此注释与其他类型的代码,例如:

@GET
public String something(@Context HttpServletRequest req) {

}

是否有可用于此注释的受支持类型列表? 此列表是否在标准的实施之间发生变化?

我正在尝试使用Jersey,我担心我会编写无法移植到其他JAX-RS实现的代码。




@Context注释可用于注入12个对象。 以下是每个版本的快速摘要

  • HttpHeaders - HTTP标头值和参数
  • UriInfo - URI查询参数和路径变量
  • SecurityContext - 提供对给定HTTP请求的安全相关数据的访问
  • 请求 - 允许预处理请求处理
  • ServletConfig - ServletConfig
  • ServletContext - ServletContext
  • HttpServletRequest - 请求的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
  }
}

这是一个回答问题的五部分系列@Conext用于什么?




Related

java jersey jax-rs