在我的应用程序(独立)中,当我需要从Guice
获取一些对象实例时,我通常会这样做:
injector = Guice.createInjector(new AppModule());
instance = injector.getInstance(MyInterface1.class);
我在想:
AppModule
类的实例,而不是模块类引用本身,所以Guice可以实例化它?AppModule
课作为单身,我应该期待哪些副作用,因此在致电Guice.createInjector()
时始终使用相同的实例?作为旁注:
答案 0 :(得分:4)
将实例传递给createInjector
允许您通过构造函数参数配置您喜欢的模块。 Guice不会改变Module
,所以你可以保留它们,但更好的做法是你已经在做的事情:创建一个Injector
并从那里引导你的应用程序。随着应用程序的增长,您将编写更多模块,并且您不希望自己管理这种复杂性。
你不应该保持对Injector
的引用,因为你总是可以注入它,尽管在适当的情况下数量有限。将实际依赖项注入到类中更有意义。这使得依赖层次结构清晰,代码更易于测试。