Есть кое-что, чего я просто не понимаю в guice: Согласно тому, что я До сих пор читал, я должен использовать Injector только в моем классе начальной загрузки (в автономном приложении это обычно будет в методе main ()), как в примере ниже (взятом из документации 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.
*/
RealBillingService billingService = injector.getInstance(RealBillingService.class);
...
}
Но что, если не все объекты, которые мне когда-либо понадобятся, могут быть созданы во время запуска? Может быть, я хочу отреагировать на какое-то взаимодействие пользователя, когда приложение запущено? • Мне нужно где-то хранить свой инжектор (например, как статическую переменную), а затем вызывать injector.getInstance (SomeInterface.class), когда мне нужно создать новый объект?
Конечно, распространение вызовов Injector.getInstance () повсюду кажется нежелательным.
Что я здесь не так?