spring創(chuàng)建bean的三種 Spring為啥默認(rèn)把bean設(shè)計(jì)成單例的?
Spring為啥默認(rèn)把bean設(shè)計(jì)成單例的?為什么?單例bean只能在第一次創(chuàng)建bean時(shí)創(chuàng)建。將來,bean將被重用,對(duì)象將不會(huì)頻繁創(chuàng)建。單件豆子有很多優(yōu)點(diǎn),例如:1。重用bean降低了新實(shí)例的性能
Spring為啥默認(rèn)把bean設(shè)計(jì)成單例的?
為什么?
單例bean只能在第一次創(chuàng)建bean時(shí)創(chuàng)建。將來,bean將被重用,對(duì)象將不會(huì)頻繁創(chuàng)建。
單件豆子有很多優(yōu)點(diǎn),例如:1。重用bean降低了新實(shí)例的性能消耗;
2。減少JVM垃圾收集,因?yàn)閎ean更少,所以回收的對(duì)象更少;
3。您可以更快地獲取bean,因?yàn)閟pring在生成單例對(duì)象之后將它們存儲(chǔ)在緩存中。
spring中創(chuàng)建bean對(duì)象時(shí)多例和單例的區(qū)別?
當(dāng)在back to prototype模式下創(chuàng)建的bean用完時(shí),它們將自然地被回收,因?yàn)槊看蝿?chuàng)建bean實(shí)例時(shí),singleton模式下的bean都不會(huì)被回收。
事實(shí)上,GC回收對(duì)象與它們是否是SpringBean無關(guān)。
Bean是一個(gè)公共實(shí)例對(duì)象,它與您的新實(shí)例基本相同。只是spring為您實(shí)例化bean并將其放入容器中。容器的底層數(shù)據(jù)結(jié)構(gòu)是concurrent HashMap。
您可以閱讀spring源代碼分析書,了解spring背后的原理。