Injector.getInstance (..) gibt eine neue Instanz für eine Singleton
-
22-08-2019 - |
Frage
Mein Modul:
bind( Translator.class ).to( TranslatorImpl.class ).in( Scopes.SINGLETON );
Jetzt erwarte ich das gleiche Instanz jedes Mal bekommen, wenn ich
Injector injector = ...;
injector.getInstance( Translator.class );
Aber wenn ich
injector.getInstance( TranslatorImpl.class );
Ich bekomme eine neue Instanz jedes Mal. Ist das ein Bug oder erwartetes Verhalten?
Lösung
Das ist das erwartete Verhalten, da TranslatorImpl.class
nicht auf den Singleton Umfang gebunden ist, nur Translator.class
ist.
Wenn Sie beide getInstance(..)
wollen die gleiche Instanz zurückzugeben, können Sie die Implementierung auf den Singleton Umfang binden:
bind(Translator.class).to(TranslatorImpl.class);
bind(TranslatorImpl.class).in(Scopes.SINGLETON);
assertEquals(injector.getInstance(Translator.class), injector.getInstance(TranslatorImpl.class));
Siehe https://github.com/google/guice/wiki/Scopes # Anwendung-Bereiche für weitere Details.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow