当前位置: 首页 > 面试题库 >

@Context对象来自哪里

慕阳伯
2023-03-14
问题内容

我到处都在搜寻,但似乎找不到清晰的答案…

服务器(我的问题是glassfish)注入用@Context注释的实际objets的机制是什么?更具体地说,如果我想编写一个类似以下内容的类:

@Path("/")
public class MyResource {
  @GET
  public String doSomething(@Context MyObject obj) {
    // ...
  }
}

那我该怎么办呢?实例化MyObject的位置在哪里,由谁执行,如何执行?

编辑:我看过类似以下内容:

在JAX-RS中使用@ Context,@Provider和ContextResolver

http://jersey.576304.n2.nabble.com/ContextResolver-confusion-
td5654154.html

但是,这与我所见不符,例如在org.neo4j.server.rest.web.RestfulGraphDatabase的构造函数中,它具有以下签名:

public RestfulGraphDatabase(
  @Context UriInfo uriInfo,
  @Context Database database,
  @Context InputFormat input,
  @Context OutputFormat output,
  @Context LeaseManager leaseManager )

问题答案:

您可以编写自己的注入提供程序并将其插入Jersey-查看SingletonTypeInjectableProvider和PerRequestTypeInjectableProvider-扩展这些类之一(取决于您希望注入对象的生命周期),并将实现注册为您的Web应用程序中的提供程序。

例如,如下所示:

@Provider
public class MyObjectProvider extends SingletonTypeInjectableProvider<Context, MyObject> {
    public MyObjectProvider() {
        // binds MyObject.class to a single MyObject instance
        // i.e. the instance of MyObject created bellow will be injected if you use
        // @Context MyObject myObject
        super(MyObject.class, new MyObject());
    }
}

要将提供程序包括在您的Web应用程序中,您可以选择以下几种方式:

  1. 如果您的应用使用类路径扫描(或程序包扫描),只需确保提供程序位于正确的程序包中/类路径中
  2. 或者您可以简单地使用META-INF / services条目进行注册(添加META-INF / services / com.sun.jersey.spi.inject.InjectableProvider文件,其内容中包含您的提供程序类的名称)


 类似资料:
  • 当Vert.x提供一个事件的处理程序或调用Verticle的开始或停止的方法,执行与Context相关联。一般Context是event-loop context 绑定特定的事件循环线程。因此,对于这方面的执行总是发生在该完全相同的事件循环线程。在worker verticles和运行内嵌阻止代码worker context的情况下将使用一个线程从worker线程池的执行关联。 若要获得conte

  • 问题内容: 我是JAX-RS的新手,我试图了解注释的工作方式。 在javadoc中有六个等级的列表()。但是,我在网络上找到将this注释与其他类型一起使用的代码,例如: 是否有可以与此注释一起使用的受支持类型的列表?在执行标准之间,此列表是否会更改? 我目前正在试验Jersey,我担心自己写的代码无法移植到其他JAX-RS实现中。 问题答案: 铆接的JAX-RS 规范定义了你可以通过注入的所有标

  • 我是 JAX-RS 的新手,我正在尝试了解注释应该如何工作。 在javadoc中有一个包含六个类的列表(< code >应用程序、< code>UriInfo、< code >请求、< code>HttpHeaders、< code >安全上下文、< code >提供者)。但是,我在网上找到了将this批注用于其他类型的代码,例如: 是否有可用于此批注的支持类型列表?该列表在标准实施期间是否发生变

  • 问题内容: 您是否知道是否有内置函数可以从任意对象构建字典?我想做这样的事情: 注意:它不应包含方法。仅字段。 问题答案: 请注意,Python 2.7中的最佳实践是使用新型类(Python 3不需要),即 同样,“对象”和“类”之间也存在差异。要从任意对象构建字典,只需使用即可。通常,您将在类级别声明方法,并在实例级别声明属性,因此应该没问题。例如: 更好的方法(由robert建议在注释中使用)

  • 问题内容: 是否可以在JAX-RS下以REST方法访问Request对象? 我刚刚发现 问题答案: 在JAX- RS上,必须使用@Context注释Request参数: 您也可以选择注入: UriInfo HttpHeaders 安全上下文 HttpServletRequest

  • 假设我有一个非常大的对象集合(数百万个),这些对象是根据proto-wire格式序列化的。是否可以从文件中流式处理这些项目?我尝试将对象序列化为列表 我怀疑解决方案需要我知道每个序列化项的大小,然后从流中读取该大小,并将该字节跨度传递给protobuf序列化程序进行反序列化。我想确保没有一种更简单的机制来完成这项任务,这种机制不需要了解每个对象实例中可能不同的单个项目的长度。 我的另一个想法是在流