代码之家  ›  专栏  ›  技术社区  ›  nkr1pt

获取多个0耦合到Guice的新实例

  •  2
  • nkr1pt  · 技术社区  · 16 年前

    我创建了一个类,它使用javaexecutorapi创建/管理具有固定线程数的池。 每个线程都需要一个特定对象的新实例,我想给这个对象注入Guice。 目前我使用的是一个提供程序,它通过get()方法提供对象的新实例。

    我真的希望这门课是真正的不可知论者,这可能吗?

    仅仅创建使用'new'关键字的新实例不是一个选项,因为这使得在单元测试中不可能用一个模拟实现替换那些对象。

    依赖注入可能不适合这种情况,我最好创建一个工厂来获取这些对象?

    2 回复  |  直到 16 年前
        1
  •  3
  •   ColinD    16 年前

    您可能需要考虑的一件事是从主干构建Guice,并在guice3.0发布之前一直使用它。然后你可以使用 JSR-330 的 javax.inject.Provider

    编辑: 除此之外,我通常认为耦合到DI容器(通过从 com.google.inject (在这种情况下)并不像人们有时认为的那样是一个问题。只要您不依赖于如何获得依赖关系的细节(例如,注入 Injector 所有的地方)这是相当容易的,比如说,改变你注射的所有地方 Provider

        2
  •  1
  •   Mike Deck    16 年前

    如果您希望Guice为您注入对象,那么您的对象将耦合到Guice。这就是Guice的工作方式。您可以通过创建自己的工厂接口并注入它来绕过使用提供者接口的问题,但是您仍然需要在某个地方有一个@Inject来连接到Guice。