Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guice:使用不同的配置创建多个对象实例_Java_Guice - Fatal编程技术网

Java Guice:使用不同的配置创建多个对象实例

Java Guice:使用不同的配置创建多个对象实例,java,guice,Java,Guice,我想知道解决以下问题的最佳做法是什么: 我想要一些类的2个实例(特别是BlockingQueue)将它们注入到我的其他类中。这些实例中的每一个都是单独配置的(特别是,它们具有不同的容量),并且它们不支持通过@InjectAnnotation进行自动注入。这2个实例是应用程序中该类的仅有2个实例 现在,我知道我可以使用绑定注释来区分这两个实例,并使用实例绑定来实际绑定到单个实例。但问题是,我还需要配置这两个对象,并希望从Guice获得配置依赖项。你认为什么是最好的方法呢?一个选择是使用 在guic

我想知道解决以下问题的最佳做法是什么:

我想要一些类的2个实例(特别是BlockingQueue)将它们注入到我的其他类中。这些实例中的每一个都是单独配置的(特别是,它们具有不同的容量),并且它们不支持通过@InjectAnnotation进行自动注入。这2个实例是应用程序中该类的仅有2个实例

现在,我知道我可以使用绑定注释来区分这两个实例,并使用实例绑定来实际绑定到单个实例。但问题是,我还需要配置这两个对象,并希望从Guice获得配置依赖项。你认为什么是最好的方法呢?

一个选择是使用

在guice模块中创建一个提供依赖关系的方法。您可以添加在方法签名中构造对象所需的依赖项

@Provides
@MyBindingAnnotation
@Singleton
BlockingQueue<String> provideBlockingQueue(MyGuiceManagedConfig config){
    return new LinkedBlockingQueue<String>(config.getCapacity());
}
try {
    binder().bind(Integer.TYPE).toInstance(10);

    binder().bind(new TypeLiteral<BlockingQueue<String>>() {})
        .toConstructor(LinkedBlockingQueue.class.getConstructor(Integer.TYPE));
} catch (NoSuchMethodException e) {
    addError(e);
}