我只是在想這個。如果我在春天有dao bean並且dao bean有一個受保護的/公共屬性「currentSQL」。對於所有相關請求或不是,這個屬性的值是「可見的」嗎?Bean中的方法屬性可見性(線程安全嗎?!)
實施例:
@Component
public class FooDAO {
@Autowired
private DataSource dataSource;
private String currentSQL;
public void doSome()
{
currentSQL = "Foo SQL query";
}
public String getSome()
{
return currentSQL;
}
}
是在例如currentSQL屬性上述每個請求或不安全?
重要的問題是你的DAO不應該有狀態。這不是一個好習慣。他們提供持久層的方法/操作。如果你的單例在服務層有狀態,你必須確保它們上的多重訪問必須同步,無論它們是否有狀態。 –
&@ danny.lesnik嗯,我認爲:)在我的例子中是小錯誤,應該有「庫」註釋而不是「組件」。但是,這並沒有改變,Repository仍然是Singleton的範圍。而通過Spring定義,DAO應該是單例作用域(我希望:))。最好將所有屬性作爲參數傳遞給方法?或者是否有解決方案來使該屬性線程安全或請求安全。我需要這個功能,因爲我需要存儲一些針對每個請求不同的信息。 – Peter
啊,我不小心刪除了我以前的評論。這個線程現在看起來很瘋狂:)。好的,正如我在春季手冊中看到的那樣,春天最好的做法是減少州級課程。好的,我會重構我的DAO類。 – Peter