我的设置如下 -
public class ParentModel {
private StatusModel sm;
}
StatusModel
课程如下 -
public class StatusModel {
private ParentModel pm;
public void setParentModel(ParentModel pm) {
this.pm = pm;
}
}
pm
内的StatusModel
是ParentModel
取决于StatusModel
实例的引用。
内部dao
- 我正在注入ParentModel
,如下所示
@Inject
private Instance<ParentModel> factory;
但是,使用单独的方法调用设置ParentModel
对StatusModel
的引用,如下所示 -
pm = factory.get();
pm.setters...
pm.getSm().setParentModel(pm);//<----- is it possible to avoid this?
我们可以在没有方法调用的情况下获取pm
内的sm
引用吗?
答案 0 :(得分:1)
根据哪个对象可能是一个未完全初始化的状态,然后将该对象作为构造函数参数注入另一个对象,并在那里调用setter。解析后一个对象时,整个对象层次结构将保持一致:
class ParentModel {
StatusModel _status;
ParentModel(@Inject StatusModel status) {
_status = status;
_status.setParent(this);
}
}
class StatusModel {
ParentModel _parent;
void setParent(ParentModel parent) { _parent = parent);
}
那就是说,我建议打破这种循环依赖关系,因为这样你就可以恢复设计的一个很好的属性,而不可能构造无效的对象。