Spring註解問題

1 註解單例問題

component和Service和controller註解問題

三個註解都是單例。

突然一下發蒙,忘記了這個地方的註解的單例是什麼意思。

spring框架怎麼會使得一個類成爲單例,一個類成爲單例得把構造方法設爲私有。spring框架也完成不了啊。

後來查閱資料發現,這裏的單例是指被註解的類是多個請求對應着一個對象,還是來一個請求創建一個對象。

 

2 controller爲何可以是單例?

因爲controller中我們一般是不設有需要修改的屬性,所以controller可以是單例的。當然其實就算有屬性,但是屬性和每次來的請求的內容無關,其實也是可以是單例的。

2 註解循環依賴問題

出現循環依賴的時機:通過屬性注入不會有依賴問題,通過構造函數注入的時候纔會出現循環依賴問題

原理分析:

比如A依賴B,B依賴A ,通過構造器注入。

這種方式下遇到A new A的時候,必須執行new B,B的構造函數又必須調A的構造函數創建A。這就是死結。

但是如果是屬性注入,那麼過程就是首先創建A,然後把B作爲屬性set到A中,從這個操作也能看出,

解析spring循環依賴策略:

https://www.cnblogs.com/lizo/p/7401287.html  此文對spring這個循環依賴從源碼進行了分析

自測的結果:(環境springboot)

自測結論:通過構造函數注入的循環依賴會報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章