2
首先,对不起,我无法得到我的标题更具体的措辞。这里是我的代码片段:继承的虱子注射
public abstract class A {
// dependencies
private Client client;
@Inject
public A(Client client) {
this.client = client;
}
public abstract foo();
protected void bar() {
client.bar();
}
}
public class B extends A {
...
}
public class C extends A {
...
}
我的问题是这样的:既不B
也不C
真正关心boo
方法是如何在A
实现。 A
仅使用client
执行boo
。我不想通过B
和C
的构造函数继续注入client
。我有什么选择?我认为我可以直接在client
字段声明中使用@Inject
注释,而不是构造函数。这是一个好方法吗?还有其他建议的方法吗?或者我在这里误解了关于DI的一些事情?
由于提前, 巴尔加瓦我最近开始使用
这是正常使用'@ Inject'上的字段。 – yatul
谢谢@yatul!这很好。 – Bhargava
我不知道,我更愿意在字段上避免使用@Inject。这是注入最少的可测试方法;我更喜欢将它保留在构造函数中,即使它在这里和那里添加了一些构造函数参数。 –