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




spring注解详解 (2)

@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用于什么?

https://code.i-harness.com

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

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

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

}

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

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


@Context注释允许您将请求/响应上下文详细信息注入JAX-RS提供程序和资源类。 可以在类字段bean属性方法参数中执行注入。

根据specification ,以下列表总结了可以使用@Context注释注入的所有类型:

除了可在客户端和服务器端提供程序中注入的javax.ws.rs.core.Configurationjavax.ws.rs.ext.Providers程序之外,所有其他类型服务器端

当应用程序部署在servlet容器中时,以下类型才可用:

JAX-RS 2.1引入了可以使用@Context注入的其他类型:

除了上面列出的标准类型之外,JAX-RS实现(如JerseyRESTEasyApache CXF )可能会定义自己的类型,可以使用@Context注入。

以下是可用于注射的每种JAX-RS类型的简要说明:

  • 应用程序:应用程序提供的javax.ws.rs.core.Application子类的实例可以注入到类字段或方法参数中。 访问javax.ws.rs.core.Application子类实例允许将配置信息集中在该类中。

  • URI和URI模板: javax.ws.rs.core.UriInfo提供有关请求URI组件的静态和动态每请求信息。

  • 标题: javax.ws.rs.core.HttpHeaders以地图形式或强类型方便方法提供对请求标题信息的访问。 可以使用Response类提供响应头。

  • 内容协商和前提条件: javax.ws.rs.core.Request方法允许调用者确定最佳匹配表示变量,并评估资源的当前状态是否与请求中的任何前提条件匹配。

  • 安全上下文: javax.ws.rs.core.SecurityContext接口提供对当前请求的安全上下文的信息的访问。 javax.ws.rs.core.SecurityContext的方法提供对当前用户主体的访问,请求者假定的角色信息,请求是否通过安全通道到达以及使用的身份验证方案。

  • 提供者: javax.ws.rs.ext.Providers接口允许根据一组搜索条件查找提供者实例。 预期该接口主要是希望使用其他提供者功能的提供者作者感兴趣的。 它可以在客户端和服务器提供商中进行注入。

  • 资源上下文: javax.ws.rs.container.ResourceContext接口提供对默认的每请求范围内的资源或子资源类的实例化和初始化的访问。 可以注入它以帮助创建和初始化,或者只是初始化应用程序创建的实例。

  • 配置:客户端和服务器运行时javax.ws.rs.core.Configuration都可用于提供程序(客户端或服务器)和资源类(仅限服务器)中的注入。

  • SSE事件: javax.ws.rs.sse.SseEventSink表示传入的SSE连接,并提供发送事件的方法。 javax.ws.rs.sse.Sse为活动和广播公司提供工厂方法。





jax-rs