2014-01-28 32 views

回答

4

默認情況下,spring bean是單例。所以你不必爲了確保你只有一個實例而使它成爲靜態的(儘管你當然可以:Java代碼是Java代碼)。

不過,重要的是多線程可以訪問您的櫃檯。所以你必須確保所有這些訪問都是線程安全的。最簡單的方法可能是使用AtomicInteger或AtomicLong來實現計數器。

+0

同意在這種情況下非靜態的AtomicInteger或AtomicLong是合適的。關於「你不應該靜態確定你只有一個實例」的評論:對於實例變量,如果你使用基於子類的代理,你實際上可以爲單身bean創建兩個實例( CGLIB)。對於一個簡單的櫃檯來說,這不應該是一個問題。對於在單例構造函數中創建的昂貴資源,這可能是一個考慮因素。 –