Spring中Bean的單例和多例
阿新 • • 發佈:2022-05-19
在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