Wie vermeide ich, dass injector.createInstance () überall verwendet wird, wenn guice verwendet wird?

Es gibt etwas, worüber ich mich nicht im Klaren bin: Nach dem, was ich bisher gelesen habe, soll ich den Injector nur in meiner Bootstrapping-Klasse verwenden (in einer eigenständigen Anwendung ist dies normalerweise die main () -Methode) ), wie im folgenden Beispiel (aus der Guice-Dokumentation):

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);
    ...
  }

Aber was ist, wenn nicht alle Objekte, die ich jemals brauche, während des Startvorgangs erstellt werden können? Vielleicht möchte ich auf eine Benutzerinteraktion reagieren, wenn die Anwendung ausgeführt wird? Muss ich meinen Injector nicht irgendwo aufbewahren (z. B. als statische Variable) und dann injector.getInstance (SomeInterface.class) aufrufen, wenn ich ein neues Objekt erstellen muss?

Natürlich scheint es nicht wünschenswert zu sein, Aufrufe von Injector.getInstance () über den gesamten Bereich zu verteilen.

Was mache ich hier falsch?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage