加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:08:04 所属栏目:Java 来源:网络整理
导读:我的模块: bind( Translator.class ).to( TranslatorImpl.class ).in( Scopes.SINGLETON ); 现在我希望每次都能得到相同的实例 Injector injector = ...;injector.getInstance( Translator.class ); 但如果我这样做 injector.getInstance( TranslatorImpl.c
我的模块:
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#applying-scopes.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读