gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:36:35 25 4
gpt4 key购买 nike

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

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

现在,我知道我可以使用绑定(bind)注释来区分两个实例,并使用实例绑定(bind)来实际绑定(bind)到单个实例。但问题是我还需要配置这两个对象,并且我想从 Guice 获取配置依赖关系。您认为做到这一点的最佳方法是什么?

最佳答案

一种选择是使用 @Provides bindings

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

@Provides
@MyBindingAnnotation
@Singleton
BlockingQueue<String> provideBlockingQueue(MyGuiceManagedConfig config){
return new LinkedBlockingQueue<String>(config.getCapacity());
}

...and they don't support automatic injection via @Inject annotation

顺便说一句,Guice 有一个名为 constructor bindings 的功能,这使得无需 @Inject 即可绑定(bind)构造函数:

try {
binder().bind(Integer.TYPE).toInstance(10);

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

关于java - Guice:使用不同的配置创建多个对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16439641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com