Dependency injection 如何创建2个注入了不同类实现的类实例';s依赖项(通过GUI)?

Dependency injection 如何创建2个注入了不同类实现的类实例';s依赖项(通过GUI)?,dependency-injection,guice,Dependency Injection,Guice,我有一个名为“Consumer”的接口 实现如下: public class ConsumerImpl implements Consumer { DBManager m_dbm ; @Inject public ConsumerImpl (DBManager dbm) { m_dbm = sdbm; } } 我需要有2个consumerImpl类的实例,但要注入不同的DBManager实现。如何通过guice配置它?类似的东西 public类Gui

我有一个名为“Consumer”的接口

实现如下:

public class ConsumerImpl  implements Consumer {
  DBManager  m_dbm ;
  @Inject
  public ConsumerImpl  (DBManager dbm) {
    m_dbm = sdbm;       
  }
}

我需要有2个consumerImpl类的实例,但要注入不同的DBManager实现。如何通过guice配置它?

类似的东西

public类GuiceDependencyExample{
静态类DBManager{}
静态类DBManagerVendor1扩展了DBManager{}
静态类DBManagerVendor2扩展了DBManager{}
静态接口使用者{
DBManager getDbManager();
}
静态@Retention(RetentionPolicy.RUNTIME)@BindingAnnotation@interface DBManager1{}
静态@Retention(RetentionPolicy.RUNTIME)@BindingAnnotation@interface DBManager2{}
静态类ConsumerImpl实现Consumer{
DBManager m_dbm;
@注入
公共使用者mpl(DBManager dbm){m_dbm=dbm;}
公共DBManager getDbManager(){return m_dbm;}
}
静态抽象类ConsumerModule扩展了PrivateModule{

private final类并搜索“如何构建两个相似但略有不同的对象树?”谢谢,但我看到了这篇文章,我认为它并没有回答我的问题。这个解决方案的问题是,在代码中的某个地方,我需要显式地请求具有DBManager1或DBManager2依赖项(映射到实际类)的使用者。因此,这种做法忽略了在某个地方有配置模块,而不知道代码中的实际类型和依赖关系的要点。此外,这是一个大型系统的一部分,我不能有两个注入器。如果你不告诉客户,你的客户怎么知道要获得哪种类型的
消费者
?为什么需要第二个注入器?在本例中,您只需将这些专用模块添加到现有喷油器中。。。