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?

War es hilfreich?

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
scroll top