gpt4 book ai didi

java - 是否可以获得包含类(CDI)的引用?

转载 作者:行者123 更新时间:2023-11-30 10:22:15 25 4
gpt4 key购买 nike

我的设置如下-

public class ParentModel {
private StatusModel sm;
}

StatusModel 类如下 -

public class StatusModel {
private ParentModel pm;

public void setParentModel(ParentModel pm) {
this.pm = pm;
}
}
StatusModel 中的

pmStatusModel 所依赖的 ParentModel 实例的引用。

dao 内部 - 我正在注入(inject) ParentModel 如下

@Inject
private Instance<ParentModel> factory;

但是,将 ParentModel 引用设置为 StatusModel 使用如下单独的方法调用 -

pm = factory.get();
pm.setters...
pm.getSm().setParentModel(pm);//<----- is it possible to avoid this?

我们能否在sm 中获取pm 引用而无需方法调用?

最佳答案

根据哪个对象可能处于未完全初始化状态(无论多么短暂),将该对象作为构造函数参数注入(inject)到另一个对象中,并在那里调用 setter。当您解析后一个对象时,整个对象层次结构将保持一致:

class ParentModel {
StatusModel _status;
ParentModel(@Inject StatusModel status) {
_status = status;
_status.setParent(this);
}
}

class StatusModel {
ParentModel _parent;
void setParent(ParentModel parent) { _parent = parent);
}

也就是说,我会建议打破这种循环依赖关系,因为这样你就可以恢复设计的一个很好的属性,在那里不可能构造无效的对象。

关于java - 是否可以获得包含类(CDI)的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47431546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com