Injector.getInstance(..)シングルトンのための新しいインスタンスを返します。

StackOverflow https://stackoverflow.com/questions/531061

質問

私のモジュール:

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を参照してください。 #適用-スコープの詳細ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top