java - 如何使用 Google Guice 将一个实现绑定(bind)到几个接口(interface)?

标签 java dependency-injection guice

我需要绑定(bind)一个类作为两个接口(interface)的实现。它应该绑定(bind)在一个单例范围内。

我做了什么:

bind(FirstSettings.class).
    to(DefaultSettings.class).
    in(Singleton.class);
bind(SecondSettings.class).
    to(DefaultSettings.class).
    in(Singleton.class);

但是,很明显,这会导致创建两个不同的实例,因为它们绑定(bind)到不同的键。

我的问题是我该怎么做?

最佳答案

Guice 的 wiki 有 a documentation about this use case .

基本上,这是你应该做的:

// Declare that the provider of DefaultSettings is a singleton
bind(DefaultSettings.class).in(Singleton.class);

// Bind the providers of the interfaces FirstSettings and SecondSettings
// to the provider of DefaultSettings (which is a singleton as defined above)
bind(FirstSettings.class).to(DefaultSettings.class);
bind(SecondSettings.class).to(DefaultSettings.class);

无需指定任何额外的类:只需根据 Provider 来考虑,答案自然而然。

关于java - 如何使用 Google Guice 将一个实现绑定(bind)到几个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791908/

相关文章:

java - Guice 可以断言单例不是直接实例化的吗?

Java 模块化与依赖注入(inject)

java - RoboGuice @Inject 注入(inject)的类何时可以为 null?

java - 使用依赖注入(inject) w/guice 的可浏览源项目?

java - Guice 如何根据 String id 提供不同的子类实例

java - JComboBox TableCellRenderer 似乎失去了它的值(value),尽管该值被保存了

java - 如何在类中声明ImageView?

java - 将 foreach 循环与另一个类中的方法结合使用 (Java)

testing - Grails 功能测试依赖注入(inject)

java - 如果没有 @Provides- 或 @Produces-annotated 方法,则无法提供 Dagger 2 Activity