Java 是否可以获得包含类(CDI)的引用?
我的设置如下-Java 是否可以获得包含类(CDI)的引用?,java,cdi,weld,jboss-weld,weld2,Java,Cdi,Weld,Jboss Weld,Weld2,我的设置如下- public class ParentModel { private StatusModel sm; } StatusModel类别如下- public class StatusModel { private ParentModel pm; public void setParentModel(ParentModel pm) { this.pm = pm; } } pm = factory.get(); pm.setters.
public class ParentModel {
private StatusModel sm;
}
StatusModel
类别如下-
public class StatusModel {
private ParentModel pm;
public void setParentModel(ParentModel pm) {
this.pm = pm;
}
}
pm = factory.get();
pm.setters...
pm.getSm().setParentModel(pm);//<----- is it possible to avoid this?
pm
insideStatusModel
是ParentModel
实例的引用,StatusModel依赖于该实例
内部dao
-我正在注入ParentModel
,如下所示
@Inject
private Instance<ParentModel> factory;
我们是否可以在不调用方法的情况下获得
sm
中的pm
引用?取决于哪个对象可能处于未完全初始化的状态,将该对象作为构造函数参数注入另一个对象,并在那里调用setter。解析后一个对象时,整个对象层次结构将保持一致:
class ParentModel {
StatusModel _status;
ParentModel(@Inject StatusModel status) {
_status = status;
_status.setParent(this);
}
}
class StatusModel {
ParentModel _parent;
void setParent(ParentModel parent) { _parent = parent);
}
这就是说,我建议打破这种循环依赖关系,因为这样你就可以恢复设计中一个不可能构造无效对象的宜人属性。这是一种循环依赖关系,DI容器没有明确的方法来正确确定创建对象的顺序。横向建议:不要;相反,将
StatusModel
需要的功能提取到一个新类中,您可以将它和ParentModel
都注入到该类中。