本文主要介紹springbean singleton和多個(gè)singleton(spring boot singleton bean),下面一起看看springbean singleton和多個(gè)singleton(spring boot singleton bean)相關(guān)資訊。
在spring中,bean可以定義為兩種模式:原型和單例。
singleton:只存在一個(gè)共享實(shí)例,對(duì)此bean的所有請(qǐng)求都將返回這個(gè)唯一的實(shí)例。
原型(多實(shí)例):對(duì)這個(gè)bean的每個(gè)請(qǐng)求都將創(chuàng)建一個(gè)新的bean實(shí)例,類似于new。
默認(rèn)情況下,spring bean是單例模式。
結(jié)論:兩個(gè)變量指向一個(gè)對(duì)象。
將配置文件更改為:
結(jié)論:每次訪問(wèn)一個(gè)bean,都會(huì)創(chuàng)建一個(gè)新的實(shí)例。
此外,如果您想要在springboot項(xiàng)目中配置一個(gè)或多個(gè)實(shí)例,您可以向相應(yīng)的bean添加一個(gè)annotation @scope。
spring bean是線程安全的無(wú)狀態(tài)bean,也就是說(shuō),線程中的操作不會(huì)對(duì)bean的成員執(zhí)行除查詢之外的操作,那么這個(gè)單例bean就是線程安全的。比如spring mvc的控制器、服務(wù)、dao,大多是無(wú)狀態(tài)的,只關(guān)注方法本身。
有狀態(tài)bean:有實(shí)例變量的對(duì)象,可以保存數(shù)據(jù),是線程安全的。
對(duì)于有狀態(tài)bean,spring官方提供的bean一般都會(huì)提供通過(guò)threadlocal解決線程安全的方法,比如requestcontextholder、transactionsynchronization manager、localecontextholder等。
blog . csdn . net/ _ 35860138/article/details/88798726
標(biāo)簽:
線程實(shí)例
了解更多springbean singleton和多個(gè)singleton(spring boot singleton bean)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。