将AppModule保持为单身人士

时间:2014-02-14 15:48:37

标签: java guice

在我的应用程序(独立)中,当我需要从Guice获取一些对象实例时,我通常会这样做:

injector = Guice.createInjector(new AppModule());
instance = injector.getInstance(MyInterface1.class);

我在想:

  • 为什么我需要传递AppModule类的实例,而不是模块类引用本身,所以Guice可以实例化它?
  • 如果我将AppModule课作为单身,我应该期待哪些副作用,因此在致电Guice.createInjector()时始终使用相同的实例?

作为旁注:

  • 注射器本身怎么样?如果我只在某处保留一个实例,它的设计会有多糟糕?

1 个答案:

答案 0 :(得分:4)

将实例传递给createInjector允许您通过构造函数参数配置您喜欢的模块。 Guice不会改变Module,所以你可以保留它们,但更好的做法是你已经在做的事情:创建一个Injector并从那里引导你的应用程序。随着应用程序的增长,您将编写更多模块,并且您不希望自己管理这种复杂性。

你不应该保持对Injector的引用,因为你总是可以注入它,尽管在适当的情况下数量有限。将实际依赖项注入到类中更有意义。这使得依赖层次结构清晰,代码更易于测试。