Как избежать повсюду injector.createInstance () при использовании guice?

Есть кое-что, чего я просто не понимаю в 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 () повсюду кажется нежелательным.

Что я здесь не так?

13
задан sme 21 October 2010 в 11:20
поделиться