java - 动态决定在 Guice 中注入(inject)哪个类

标签 java guice

我有一个关于 Guice 的问题。我有一个接口(interface) IMyInterface,类 MyClass 实现了它。

public class MyClass {
   public MyClass(IMyWorker);
}

接口(interface) IMyWorker 有两个实现者 MyWorker1 和 MyWorker2。

我得到的绑定(bind)是:

    bind(IMyInterface.class).to(MyClass.class);
    bind(IMyWorker.class).annotatedWith(W1.class).to(MyWorker1.class);
    bind(IMyWorker.class).annotatedWith(W2.class).to(MyWorker2.class);

W1和W2是定义的注释。

我的问题是:当我创建MyClass的实例时,如何指定要注入(inject)到MyClass的构造函数中的Worker?

非常感谢。

最佳答案

将注释添加到MyClass的构造函数中。

@Inject
public MyClass(@W1 IMyWorker worker) 
{
    ....
}

这样,MyWorker1 类的实例将被注入(inject)。

关于java - 动态决定在 Guice 中注入(inject)哪个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139337/

相关文章:

java - 在带有Java Selenium 的自动化框架中使用的OOP概念的一些实时示例是什么?

java - StAX - 是否可以将 XML 节点转换为 HashMap(或带有 hashmap 的 POJO 类)

java - Debian/etc/init.d/script 没有运行?

java - 针对现有注入(inject)器测试注入(inject)类的方法

java - Guice 相当于 Spring 的 @Autowire 实例列表

java - 如何正确修复我的函数调用(java)?

java - 更新有限状态机中的数据

jpa - Google Guice 持久化 + Spring Data JPA

java - `ProvisionException` 被缓存并且构造函数代码永远不会重试

guice - 如何使用@Named绑定(bind)两个multibinder但接口(interface)类型相同?