假设以下类是单例
public class myDAO {
//determines the tableName and Id column names to based on itemType
private String itemType;
public void setItemType(String itemType) {...}
//Following methods use itemType to customize their queries
public boolean findObj(int id){...}
public boolean deleteObj(int id){...}
public boolean updateObj(Obj obj){...}
//etc...
}
该代码最近使用 setter 进行了重构,从而为 DAO 提供了一些状态。我看到这是singleton-scope
在 Spring 的配置文件中配置的。我有一种奇怪的感觉,这可能会导致潜在的比赛条件。那是对的吗?
我真的不确定这是否确实如此,但如果它是真的,恕我直言,弄清楚这将是一个噩梦般的情况。我知道这可能不是最好的设计,但我只是想知道当并发线程查询不同的itemTypes
. 我正在考虑将范围更改为prototype
但不确定在这种情况下是否确实需要。