什麼是循環依賴
看這兩個demo
public class A{
private B b;
}
public class B{
private A a;
}
當你new了一個A
spring在執行個體化A的時候發現依賴B
這時候spring就會先去執行個體化B
然後又發現B依賴了A
spring又去執行個體化A
。。。。。。
由此導緻無限循環
如何解決
首先搞懂一個概念,解決循環依賴并不是靠我們,spring會幫我們解決
但是!!!記住一點,很重要
spring隻能通過提前暴露bean來解決setter注入的循環依賴,構造器注入的循環依賴無法解決(Spring執行個體化一個bean的時候,是分兩步進行的,首先執行個體化目标bean,然後為其注入屬性。)
不過話說回來,如果出現循環依賴,一般都是設計上的問題,但凡正經點的項目都不會出現這種問題,如果出現了,不用方,我們能做的就是把構造器建立bean改成setter,剩下的交給spring;