gpt4 book ai didi

java - 获取多个相同类型的guice单例

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:31 24 4
gpt4 key购买 nike

你能得到 2 个相同底层类型的单例实例吗?

这在 spring 中显然是微不足道的,因为它基于您附加范围的命名实例,但我看不到 guice 中关于将类型绑定(bind)到实现类的等效项。请注意,我不想绑定(bind)到实例,因为有问题的实例通过 guice 注入(inject)了其他依赖项。

最佳答案

我想补充 Marcin 的回复,补充说在这种情况下您不必限制自己使用 toInstance() 或提供程序方法。

以下内容同样有效:

bind(Person.class).annotatedWith(Driver.class).to(MartyMcFly.class).in(Singleton.class);
bind(Person.class).annotatedWith(Inventor.class).to(DocBrown.class).in(Singleton.class);

[...]

@Inject
public BackToTheFuture(@Driver Person marty, @Inventor Person doc) { ... }

Guice 将在实例化 MartyMcFly 和 DocBrown 类时照常注入(inject)依赖项。


请注意,当您想要绑定(bind)多个相同类型的单例时,它也适用:

bind(Person.class).annotatedWith(Driver.class).to(Person.class).in(Singleton.class);
bind(Person.class).annotatedWith(Inventor.class).to(Person.class).in(Singleton.class);

为此,您必须确保 Person 未绑定(bind)在 Singleton 范围内,无论是明确地绑定(bind)在 Guice 模块中,还是使用 @Singleton 注释。更多详细信息,请参阅 this Gist .

编辑:我作为示例给出的示例代码来自 Guice Grapher Test .查看 Guice 测试是更好地了解如何使用 API 的好方法(这也适用于具有良好单元测试的每个项目)。

关于java - 获取多个相同类型的guice单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1221920/

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