Есть кое-что, чего я просто не понимаю: согласно тому, что я прочитал, я должен использовать Injector только в своем классе начальной загрузки (в автономном приложении это, как правило, находится в главном ( )), как в примере ниже (взято из справочной документации):
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 () повсюду кажется нежелательным.
Что я тут не так делаю?