Java Guice - 对特定实例使用注入(inject)?

标签 java dependency-injection guice

我不明白如何在 Guice 中对特定实例使用注入(inject)。我试过这个:

@Inject(optional=true)
    public void setCarpenter(@Named("setCarpenter") Carpenter carpenter){
        System.out.println("Assigned carpenter for Table");
        this.carpenter = carpenter;
    }


bind(Table.class).annotatedWith(Names.named("table1")).toInstance(new Table(4, new Metal()));
bind(Table.class).annotatedWith(Names.named("table2")).toInstance(table);
bind(Carpenter.class).annotatedWith(Names.named("setCarpenter")).toInstance(new Carpenter());

它对两个表实例都使用了 setCarpenter。如何指定设置为特定实例?

最佳答案

我认为您可能正在寻找“机器人腿”问题的解决方案。

有关详细信息,请参阅 wiki here

关于Java Guice - 对特定实例使用注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749404/

相关文章:

java - Java中有哪些容器

在局部变量上调用的 Java 8 方法引用

java - 如何使用 Jersey 中的 ContainerResponseFilter 为 CORS 允许多个域。?

entity-framework - 实现具有应由 DI 容器解析的依赖项的被动属性

c# - 如何在 Razor 页面中使用相同的单例实例?

java - 一起使用 Guice 和 JMock 的最佳方式是什么?

java - 当父类(super class)使用@Inject时,如何构造一个类?

Java:检查字符串是否仅包含 1,0 或一个点

java - Jersey 3 - 使用bindFactory配置绑定(bind)

java - Guice 和一般应用程序配置