【发布时间】:2016-08-22 02:37:42
【问题描述】:
我有一个界面
public interface Abstraction {
void execute();
}
我已经构建了一个复合实现,并希望将此对象注册为 bean,@Named
@Named
public class Composite implements Abstraction {
private List<Abstraction> list;
@Inject
public Composite(List<Abstraction> list) {
this.list = list;
}
public void execute() {
list.forEach(Abstraction::execute);
}
}
如何设置它,以便将抽象的实现集正确地注入到上面的 Composite 中?我将拥有另一个将抽象作为依赖项的对象,我希望它接收上面的@Named Composite,并将下面的 2 个实现注入到 ctor 中。
public class Implementation1 implements Abstraction {
public void execute() { }
}
public class Implementation2 implements Abstraction {
public void execute() { }
}
【问题讨论】:
-
总是两个吗?只需按名称分别注入即可。
-
@Pillar 这是我的特殊情况,我可以这样做,但不知道怎么做,因为我不能在每个实现上加上
Named注释。抱歉,我是 Java bean 世界的新手。
标签: java spring dependency-injection spring-boot javabeans