当前位置:  开发笔记 > 编程语言 > 正文

Injector.getInstance(..)返回单例的新实例

如何解决《Injector.getInstance(..)返回单例的新实例》经验,为你挑选了1个好方法。

我的模块:

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

现在我希望每次都能得到相同的实例

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

但如果我这样做

injector.getInstance( TranslatorImpl.class );

我每次都会得到一个新实例.这是一个错误还是预期的行为?



1> albertb..:

这是预期的行为,因为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#applying-scopes.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有