我使用HK2作为依赖注入框架。我正在我的应用程序中实例化一个状态机。因此,A <-> B是很有可能的,因为根据输入,我们可以从B转换回A。
@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)来获得这个图时,我会得到循环依赖异常。做这种事有什么好处呢?
发布于 2015-07-29 15:22:31
您应该能够注入javax.inject.Provider。从Javadoc
提供
T的实例。通常由注射器实现。对于可以注入的任何类型的T,也可以注入Provider<T>。与直接注入T相比,注入Provider<T>支持:
当你需要的时候打电话给get()
B b = bProvider.get();https://stackoverflow.com/questions/31704384
复制相似问题