ash*_*aka 8 java dependency-injection guice
我的模块:
bind( Translator.class ).to( TranslatorImpl.class ).in( Scopes.SINGLETON );
Run Code Online (Sandbox Code Playgroud)
现在我希望每次都能得到相同的实例
Injector injector = ...;
injector.getInstance( Translator.class );
Run Code Online (Sandbox Code Playgroud)
但如果我这样做
injector.getInstance( TranslatorImpl.class );
Run Code Online (Sandbox Code Playgroud)
我每次都会得到一个新实例.这是一个错误还是预期的行为?
alb*_*rtb 17
这是预期的行为,因为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));
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅https://github.com/google/guice/wiki/Scopes#applying-scopes.
| 归档时间: |
|
| 查看次数: |
5288 次 |
| 最近记录: |