Como evitar injector.createInstance () em todo o lugar ao usar o guice?

Há algo que eu simplesmente não entendo sobre o truque: de acordo com o que li até agora, devo usar o Injector apenas na minha classe de inicialização (em um aplicativo independente, isso normalmente seria no método main ()) , como no exemplo abaixo (extraído da documentação do 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);
    ...
  }

Mas e se não for possível criar todos os objetos que eu precisar durante a inicialização? Talvez eu queira responder a alguma interação do usuário quando o aplicativo estiver sendo executado? Não preciso manter meu injetor em algum lugar (por exemplo, como uma variável estática) e depois chamar injector.getInstance (SomeInterface.class) quando precisar criar um novo objeto?

É claro que espalhar chamadas para Injector.getInstance () em todo o lugar parece não ser desejável.

O que estou errado aqui?

questionAnswers(3)

yourAnswerToTheQuestion