當前位置:編程學習大全網 - 網站源碼 - spring如何解決循環依賴

spring如何解決循環依賴

首先我們要清楚什麽是循環依賴

意思就是多個bean相互持有對方,比如我們有兩個bean,第壹個bean依賴第二個bean,第二個bean也依賴第壹個bean。然後壹個程序去調用第壹個bean的時候,因為第壹個bean含有第二個bean的依賴,然後就會去調用第二個bean;再然後第二個bean也有第壹個bean的依賴,然後又去調用第壹個bean,就這樣壹直循環調用

最後spring又是怎麽去解決這樣壹個問題的呢?

先是實例化對象,然後賦值,初始化..........正是因為這樣壹個生命周期,造成了spring的循環依賴,最後就是spring采用三級緩存來解決他的循環依賴的問題

spring的三級緩存就是三個Map

壹級緩存:

他就是sqlsession級的緩存

二級緩存:

它是默認關閉的,是mapper級的緩存

三級緩存:存放實例化好的bean

整個的解決循環依賴的流程:

首先到壹級緩存的單列中去獲取,如果有就直接返回

如果沒有或者這時候正處於創建過程中,就到二級緩存中去獲取,如果拿到就直接返回

如果沒有拿到,那現在就到了三級緩存了,就是用getObject()從三級緩存中獲取,如果獲取到就把這個移除掉,放到二級緩存中去

  • 上一篇:微信公眾號微商城開發需要多少錢?
  • 下一篇:誰能做壹個全屏MV視頻?
  • copyright 2024編程學習大全網