Injector.getInstance(..)シングルトンのための新しいインスタンスを返します。
-
22-08-2019 - |
質問
私のモジュール:
bind( Translator.class ).to( TranslatorImpl.class ).in( Scopes.SINGLETON );
今、私が
行うときに毎回同じインスタンスを得ることを期待しますInjector injector = ...;
injector.getInstance( Translator.class );
しかし、私がしなければ、
injector.getInstance( TranslatorImpl.class );
私は、新しいインスタンスを毎回取得します。これはバグや予想される動作ですか?
解決
これは予想される動作TranslatorImpl.class
がシングルトンスコープにバインドされていないので、唯一のTranslator.class
がされている。
あなたは、両方のgetInstance(..)
が同じインスタンスを返すようにしたい場合は、あなたがシングルトンスコープへの実装をバインドすることができます:
bind(Translator.class).to(TranslatorImpl.class);
bind(TranslatorImpl.class).in(Scopes.SINGLETON);
assertEquals(injector.getInstance(Translator.class), injector.getInstance(TranslatorImpl.class));
https://github.com/google/guice/wiki/Scopesを参照してください。 #適用-スコープの詳細ます。
所属していません StackOverflow