从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
方法一样。