2016-05-16 48 views
0

我有一個問題,我有一個基於spring-MVC的項目。其中有一個包含所有用戶都可以訪問的靜態變量的類。所有Bean都是單例,當多個用戶訪問應用程序時會產生問題:最後一個用戶在上一個用戶執行任務的同時修改靜態變量。因此,在最後一位用戶出現之前的用戶數據之後,該數據與報告中產生衝突的最後一位用戶的數據重疊。我也是用戶原型bean,但是由於靜態變量我沒有找到任何解決方案。所以任何人都有解決這個問題的解決方案?謝謝。具有全局靜態變量的原型spring bean

+1

顯示一些代碼! –

回答

1

首先:使用db,並在那裏保存數據。如果您重新啓動程序,用戶的所有更改都將被丟棄。

第二:由於它是一致性問題,因此它將其標記爲:使同步塊保持版本,在創建同步塊時檢查更改是否正在更改最新版本或以前版本: 如果更改最新提交 - ok如果不是:處理異常。

第三:這味道不好。你確定你需要所有用戶修改一個參數嗎?你有記錄誰和如何修改它?單身主要用作在整個應用程序中共享信息的只讀不可變對象。

還有:請不要使用靜態可變變量。認真。