首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环依赖的HK2注入

循环依赖的HK2注入
EN

Stack Overflow用户
提问于 2015-07-29 15:10:09
回答 1查看 1.2K关注 0票数 1

我使用HK2作为依赖注入框架。我正在我的应用程序中实例化一个状态机。因此,A <-> B是很有可能的,因为根据输入,我们可以从B转换回A。

代码语言:javascript
复制
@Singleton 
class StateManager extends SomeInterface{

    @Inject
    private B b;

    @Inject
    private A a;
}

@Singleton 
class A extends State{

    @Inject
    private B b;

    @Inject
    private StateManager sm;

}

@Singleton 
class B extends State{

    @Inject
    private A a;

    @Inject
    private StateManager sm;
}

我怎样才能实现这样的目标?上面的例子只是为了说明。我有更多的州。我试着看它是否是复制的,但找不到处理的。当我尝试ServiceLocator.getService(StateManager.class)来获得这个图时,我会得到循环依赖异常。做这种事有什么好处呢?

EN

回答 1

Stack Overflow用户

发布于 2015-07-29 15:22:31

您应该能够注入javax.inject.Provider。从Javadoc

提供T的实例。通常由注射器实现。对于可以注入的任何类型的T,也可以注入Provider<T>。与直接注入T相比,注入Provider<T>支持:

  • 检索多个实例。
  • 延迟或可选的实例检索。
  • 打破循环依赖关系.
  • 抽象作用域,以便从包含范围中的实例中查找较小范围中的实例。

当你需要的时候打电话给get()

代码语言:javascript
复制
B b = bProvider.get();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31704384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档