Там что-то, о чем я просто не понимаю: согласно тому, что я читал до сих пор, я должен использовать Инжектор только в моем классе начальной загрузки (в автономном приложении это обычно будет в основном ( )), как в примере ниже (взято из документации):
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);
...
}
Но что, если не все объекты, которые мне нужны, могут быть созданы во время запуска? Может быть, я хочу ответить на некоторые взаимодействия с пользователем, когда приложение запущено? Разве мне не нужно держать инжектор где-нибудь (например, как статическую переменную), а затем вызвать инжектор .getInstance(SomeInterface.class), когда мне нужно создать новый объект?
Конечно, распространение запросов на Injector.getInstance() по всему месту кажется нежелательным.
Чем я здесь ошибаюсь?