重用Spring创建的原型bean的相同实例

时间:2015-11-13 16:00:03

标签: java spring solid-principles

我正在寻找一种使用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配置。

1 个答案:

答案 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会注入所有实现。