單例bean的優勢
由於不會每次都新創建新對象所以有一下幾個性能上的優勢。
1、減少了新生成實例的消耗
新生成實例消耗包括兩方面,第一,spring會通過反射或者cglib來生成bean實例這都是耗性能的操作,其次給
對象分配內存也會涉及復雜算法。
2、減少jvm垃圾回收
由於不會給每個請求都新生成bean實例,所以自然回收的對象少了。
3、可以快速獲取到bean
因為單例的獲取bean操作除了第一次生成之外其余的都是從緩存里獲取的所以很快。
單例bean的劣勢
單例的bean一個很大的劣勢就是他不能做到線程安全!由於所有請求都共享一個bean實例,所以這個bean要是有狀態的一個bean的話可能在並發場景下出現問題,而原型的bean則不會有這樣問題(但也有例外,比如他被單例bean依賴),因為給每個請求都新創建實例。