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)
自測結論:通過構造函數注入的循環依賴會報錯。