Gibt es ein empfohlenes Muster zum Herunterfahren / Schließen von Objekten, die mit Guice erstellt wurden?
Der Lebenszyklus, den ich anstrebe, ist:
injector.getInstance(Foo.class)
) Ich möchte, dass dies ein deterministischer Schritt ist (nicht "eines Tages, an dem der GC läuft").
Tut mir leid, aber Java ist die falsche Sprache für dich. Das DI-Framework weiß nicht, wann alle Referenzen auf ein Objekt weg sind. Nur der GC weiß das.
Wenn Sie eine "schließbare" Ressource haben, verwenden Sie das try / finally-Muster, um es zu schließen (siehe unten).
%Vor%Jetzt, um etwas zu hausieren. Guice kann wissen, wann ein Bereich beginnt und endet. Ihr benutzerdefinierter Bereich könnte nach Abschluss des Vorgangs einen Bereinigungsschritt ausführen. Dieser Bereich könnte sogar Proxys zurückgeben, so dass die Objekte ungültig wären, wenn Sie versuchen würden, auf sie außerhalb des zulässigen Bereichs zuzugreifen.
(Oh und +1 bis ColinD - Provider injizieren.:)
BEARBEITEN : Guiceyfruit scheint Unterstützung für Lebenszyklen
Tags und Links java dependency-injection guice object-lifetime