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