Question

Mon module:

bind( Translator.class ).to( TranslatorImpl.class ).in( Scopes.SINGLETON );

Maintenant, je pense à obtenir la même instance à chaque fois que je fais

Injector injector = ...;
injector.getInstance( Translator.class );

Mais si je fais

injector.getInstance( TranslatorImpl.class );

Je reçois une nouvelle instance à chaque fois. Est-ce un bug ou le comportement attendu?

Était-ce utile?

La solution

Ceci est le comportement attendu parce que TranslatorImpl.class n'est pas lié à la portée singleton, ne Translator.class est.

Si vous voulez à la fois getInstance(..) pour revenir la même instance, vous pouvez lier la mise en œuvre à la portée singleton:

bind(Translator.class).to(TranslatorImpl.class);
bind(TranslatorImpl.class).in(Scopes.SINGLETON);
assertEquals(injector.getInstance(Translator.class), injector.getInstance(TranslatorImpl.class));

Voir https://github.com/google/guice/wiki/Scopes # d'application de champs pour plus de détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top