2012-12-08 40 views
13

我的Web應用程序使用的Spring IoC。因此,我所有的Spring bean都是單例(默認情況下)。如果兩個請求嘗試訪問單個類的兩種不同方法。例如:MySpringBean是它有兩個方法searchRecord,並在同一時刻這兩種方法insertRecord methods.If都試圖通過同一個bean訪問類。怎樣的Spring bean處理併發

請問該怎麼做的Spring bean都可獲得的客戶端在同一時間,或者它會是併發問題時,雙方請求將嘗試訪問兩種不同的方法,但通過相同的Spring bean。並且由於spring bean是單例的,所以不能形成新的實例。在這種情況下,這是如何工作的?

回答

4

如果bean是一個單,那麼Spring會給你在任何線程相同的實例。這是由你來使這個bean線程安全的。既然它是單身人士,那麼最好讓這個班級成爲無國籍人。

4

正如其他人已經指出,春季是要提供相同的實例中的「單身」豆情況下,所有的線程。

你需要明白的是,由線程執行的代碼,而對象提供狀態和行爲(代碼)做一個系統的所有工作。所以對於多線程(在你的情況下請求)確實可能在單例bean中同時運行相同的方法。你可以讓Tomasz建議的這些bean成爲無狀態的,或者使它們成爲「線程安全的」。