title: How to avoid having injector.createInstance() all over the place when using guice?
body: <p>There's something I just don't get about guice: According to what I've read so far, I'm supposed to use the Injector only in my bootstrapping class (in a standalone application this would typically be in the main() method), like in the example below (taken from the guice documentation):</p>
  
  <pre><code>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);
      ...
    }
  </code></pre>
  
  <p>But what if not all Objects I ever need can be created during startup? Maybe I want to respond to some user interaction when the application is running? Don't I have to keep my injector around somewhere (e.g. as a static variable) and then call injector.getInstance(SomeInterface.class) when I need to create a new object? </p>
  
  <p>Of course spreading calls to Injector.getInstance() all over the place seems not to be desirable.</p>
  
  <p>What am I getting wrong here? </p>