从Guice文档中:

 public static void main(String[] args) {
    /*
     * Guice.createInjector() takes your Modules, and returns a new Injector
     * instance. Most applications will call this method exactly once, in their
     * main() method.
     */
    Injector injector = Guice.createInjector(new BillingModule());

    /*
     * Now that we've got the injector, we can build objects.
     */
    BillingService billingService = injector.getInstance(BillingService.class);
    ...
  }


所以,在所有这些工作之后,如果我需要从主类中获取BillingService的实例-我需要保持注射器变量上的链接来执行此操作?

我的意思是,在其他课堂上,我需要做这样的事情:

BillingService billingService = MainClass.injector.getInstance(BillingService.class)


要获得BillingService实例?这对我来说似乎并不优雅,还有其他方法可以做到吗?

最佳答案

这就是存在模块的原因。

只需将几个模块添加到您的createInjector(...)方法。

如果您的其他类是通过模块引用的,则只需编写以下内容:

class PaymentService {
  @Inject BillingService billingService;
}


我要做的是使用一个“应用程序”类来启动所有内容,就像您在Guice配置的类中拥有main方法一样。

10-06 14:42