我正在寻找一种使用spring依赖注入来表示下面代码的方法,并遵循可靠的原则。
A a = new A();
I b = new B(a);
I c = new C(a);
I d = new D(a);
Z z = new Z( Lists.newArrayList(b,c,d));
B,C和D是同一接口上的实现,Z实例化需要这些接口的列表。总的来说,每个Z创建应该有一个新的A实例。
没有任何对象可以是单例,我很难将其转换为spring xml配置。
答案 0 :(得分:0)
您可以尝试使用这样的配置:
@Component
@Scope("prototype")
public class A {...}
@Component
@Scope("prototype")
public class B implements I {
private A a;
@Autowired
public B(A a) {
this.a = a;
}
}
@Component
@Scope("prototype")
public class C implements I {
private A a;
@Autowired
public C(A a) {
this.a = a;
}
}
@Component
@Scope("prototype")
public class D implements I {
private A a;
@Autowired
public D(A a) {
this.a = a;
}
}
public class Z {
@Autowired
private List<I> implementations;
}
我的每个实现都直接在构造函数中注入A.如果是我,Z会注入所有实现。