簡體   English   中英

Spring的Singleton作用域bean在Web應用程序中如何表現?

[英]How singleton scoped bean of spring behaves in web application?

在檢查代碼時,我發現所有bean在Web應用程序中均定義為單例。 這讓我開始思考,當多個線程嘗試訪問該bean時會發生什么。 它不會降低性能嗎?例如,我有一個singleton登錄bean,現在假設有多個用戶嘗試登錄。 現在,由於bean是單例的,因此所有用戶都將獲得同一個bean,這不會降低性能嗎? 還是還有其他東西?

您的問題有答案的暗示,因為您談到線程,通常,線程不是“活動的”代碼。 作為一個比喻,線程是通過讀取共享代碼而“處於活動狀態”和“正在執行”的線程。 線程共享代碼 您可以將代碼想像成是在白板上書寫,而線程正在做讀取它的工作。

如果共享bean具有某些狀態(例如變量),則這些線程需要更改,這是不同的。 擴展這個比喻,就像在白板上寫的一個數字,每個人都在大聲改變。

現在,需要一種方法來確保線程不會覆蓋彼此的工作。 因此,需要某種類型的同步。 單個bean(實際上是其中的可更新狀態)成為線程爭奪的資源,並且可能必須等待另一個完成。 這可能會降低性能。 如果操作不正確,也會導致錯誤和死鎖。

程序員必須注意這一點。 因為Spring提供了不同的作用域來定義bean的創建。 更多關於春天的范圍在這里

為bean實現單例作用域的方式與單例設計模式不同。 每個彈簧容器只有一個豆。 更多關於彈簧容器的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM