为什么我不能注入bean的多个实例?

时间:2013-12-24 15:14:53

标签: java java-ee jpa dependency-injection javabeans

我有两个豆子:一个管理一个股票,另一个管理两个股票之间的动作。所以,在MovStock bean中,我有:

@EJB
private Stock stock1;
@EJB
private Stock stock2;

[...]

public void setStocks(int idStock1, int idStock2) {
  stock1.loadStock(idStock1);
  stock2.loadStock(idStock2);
}

在我的代码中的某处,在另一个bean上,我这样做:

@EJB
private MovStock movStock;

[...]

movStock.setStocks(10,20);

但是它导致stock1和stock2持有相同的股票(20)。当然我做错了什么,但是使用@PersistenceContext等同一个bean的多个实例的正确方法是什么?

谢谢

1 个答案:

答案 0 :(得分:2)

豆类是容器管理的。所以你不必担心实例。 Container会在需要时创建新的,但它将具有相同的状态(如果是Statefull)。看起来Stock不应该是Enterprise Bean,而是DTO。您不应该在EJB上执行数据操作。 EJB应该在适当的结构(DTO)上执行它。