簡體   English   中英

春天的單身豆

[英]Spring singleton bean

我知道這個問題可能聽起來很幼稚,但我對Web應用程序中bean的范圍感到困惑。 我知道,對於每個請求,容器會產生一個新線程,類似於Spring Web應用程序,每個請求都會生成一個新線程,那么為什么建議我將控制器定義為單例服務,不應該是范圍這些bean是原型,因為每個請求即線程都有自己的控制器實例,服務可以使用。

請賜教。

那將是巨大的開銷。 如果您使代碼正確地保證線程安全,那么每個請求都沒有理由需要自己的服務bean,這通常意味着不會在bean上保留任何每個請求狀態。

即使創建了新線程(或根據配置重新使用),也會重新使用控制器和服務實例。 如果控制器和服務設計得很好,它們可以在請求和不可變的情況下是無狀態的,這將使它們成為線程安全的。 當它們的狀態在創建后不會改變時,它也會導致更少的對象創建。

https://gottalovedev.wordpress.com/2014/11/23/bean-scope/

給這個讀一讀。 我相信這會有所幫助。

我認為這取決於你是否需要在bean中存儲任何狀態。 通常,我編寫單例,以便它們不包含任何狀態,僅用於計算業務邏輯。 如果沒有需要管理的狀態,那么讓所有線程共享一個單例實例是可以接受的。

暫無
暫無

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

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