当前位置: 首页 > 知识库问答 >
问题:

从Injector访问Guice单例

曹德明
2023-03-14

我正在使用Guice在Java应用程序中创建一个单例。我在模块类中使用了以下方法

@Provides
@Singleton
public LinkedBlockingQueue<String> provideLinkedBlockingQueue() {
    return new LinkedBlockingQueue<>();
  }

在另一个类中,我尝试通过以下方式获取实例:

public class Resource {
  private final LinkedBlockingQueue<String> bufferQueue;

  @Inject
  public Resource(LinkedBlockingQueue<String> bufferQueue) {
    this.bufferQueue = bufferQueue;
  }

最后,我想从我的注入器访问应用程序中的相同实例,我尝试这样做:

LinkedBlockingQueue<String> bufferQueue =
        injector.getProvider(LinkedBlockingQueue.class).get();

这是在资源类和我的应用程序中从注入器共享实例的正确方法吗?

共有1个答案

上官高畅
2023-03-14

这是在资源类和我的应用程序中从注入器共享实例的正确方法吗?

不,它不是。

您应该使用键

例如:

injector.getProvider(new Key<LinkedBlockingQueue<String>>(){}).get();
 类似资料:
  • 问题内容: 我想使用Play Framework 2.4 中的Guice 类的方法,如何访问它? 我已经使用Guice 实现了一个工厂,该工厂在运行时返回了另一个工厂!在返回工厂的第二层,我需要访问Play Guice Injector以使用反射而不是注释来手动获取对象。 问题答案: 有很多方法。我用这个。 编辑:这与<= 2.4的Play版本有关: 要么 对于> = 2.5的版本:

  • 我的应用程序使用Play-2.4。2/Scala-2.11。6提供了对DI的内置GUI支持 我所有的DAO都将实现绑定到下面的接口,这应该是Guice中最简单的方法 上述实现不需要添加任何模块来提供绑定。 现在由于某种原因,我不想使用@Inject注释将依赖项注入到Books类的构造函数中。所以我试着注射如下 但这给我带来了一个guice配置异常,它说: 现在需要做什么?在这种情况下,我的方法是对

  • Aspect-Injector是一个.net框架,用于创建注入.net程序集。 安装: PM> Install-Package AspectInjector -Pre 特性: 编译时可注入 无运行时依赖 用户可自定义属性 接口注入 注入方法,属性,事件 支持方法封装

  • 我花了一点时间浏览堆栈溢出和互联网寻找我的问题的答案,但是我发现所有的答案都很难理解,我不确定它们中是否有任何一个与我的问题相关,所以我决定我需要帮助正确的背景。 我正在创建一个程序,将根据输入的特定类型的图形给出一系列解决方案。我真诚地挣扎着在第一个JFrame中从我的JComboBox中获取数据,并在第二个JFrame中显示它。 我有两个类,GraphEquationSolverGUI和定义方

  • 我正在编写一个处理多个系统的应用程序。用户可以选择他想使用的系统,我将该系统ID存储在会话(客户端会话)中 现在我有了服务类,比如说CustomerService。 我想使用 Guice 将客户实例注入控制器。但是我想使用存储在会话中的系统ID实例化客户服务。 如何访问<code>请求。Guice模块中的会话? 编辑: 简化了我上面的代码。我的实际代码使用接口。我如何使用辅助注射? 这给了我:客户

  • What is Dependency Injector? Dependency Injector is a dependency injection framework for Python. It helps implementing the dependency injection principle. Key features of the Dependency Injector: Prov