我尝试用MVP范例构建一个Webapp.因为我希望API干净并使一切都易于测试,我尝试通过Contructor Injection注入所有可能的东西.现在我来到了一个可以看到多个Textfields的视图.当数据库中存在值时,这些文本字段会被演示者填充,因此我的演示者需要视图的引用,但是vie显然也需要引用者的引用.CDI告诉我将Presenter注入到视图中,否则由于循环依赖性而无法实现.是否可以通过setter方法避免在视图中设置演示者?代码看起来像这样:
视图:
public Class ViewImpl implements view {
private PresenterImpl presenter;
private User user;
@Inject
public ViewImpl(PresenterImpl presenter, User user) {
super();
this.presenter = presenter;
this.user = user;
}
public void attach() {
super.attach();
presenter.fetchNames();
showUser();
}
public void setUser(User user) {
this.user = user;
}
}
Run Code Online (Sandbox Code Playgroud)
主持人:
public Class PresenterImpl implements Presenter {
private ViewImpl view;
private User user;
@Inject
public PresenterImpl(ViewImpl view, User user) {
this.view = view;
this.user = user;
}
public void fetchNames() {
fetchFromDB(); …Run Code Online (Sandbox Code Playgroud) 我有这样的情况.我看不到任何错误,但我没有得到我的结果.
@ApplicationScoped
public class A {
private B b;
@Inject
public A(B b) {
this.b = b;
}
}
@Singleton
public class B {
private A a;
@Inject
public B(A a) {
this.a = a;
}
}
Run Code Online (Sandbox Code Playgroud)
这种类型的依赖注入是错误的吗?
谁能帮我这个.