1. 程式人生 > 其它 >Spring中Bean的單例和多例

Spring中Bean的單例和多例

在Spring中,bean可以被定義為兩種模式:prototype(多例)和singleton(單例)

singleton(單例):只有一個共享的例項存在,所有對這個bean的請求都會返回這個唯一的例項。

prototype(多例):對這個bean的每次請求都會建立一個新的bean例項,類似於new。

Spring bean 預設是單例模式。


結論:二個變數指向一個物件。

將配置檔案改為:

結論:每次訪問bean,均建立一個新例項。

此外,在springBoot專案中如果要配置單例或者多例,可以在對應的bean上加一個@scope()註解

 

Spring bean的執行緒安全

無狀態Bean,也就是執行緒中的操作不會對Bean的成員執行查詢以外的操作,那麼這個單例Bean是執行緒安全的。比如Spring mvc 的 Controller、Service、Dao等,這些Bean大多是無狀態的,只關注於方法本身。

有狀態物件(Stateful Bean) :就是有例項變數的物件,可以儲存資料,是非執行緒安全的。

 對於有狀態的bean,Spring官方提供的bean,一般提供了通過ThreadLocal去解決執行緒安全的方法,比如RequestContextHolder、TransactionSynchronizationManager、LocaleContextHolder等。

https://blog.csdn.net/qq_35860138/article/details/88798726