天天看點

Spring解決bean之間的循環依賴(循環引用)2.概述

Spring解決bean之間的循環依賴(循環引用)2.概述

2.概述

bean的執行個體化僅僅是獲得了bean的執行個體,該bean仍在繼續建立之中,之後在該bean執行個體的基礎之上,還要做很多額外的操作,例如bean的屬性填充、處理器的應用、bean的循環依賴解決等,今天我們就來分析下Spring是如何解決bean之間的循環依賴。

當ClassA引用ClassB,ClassB又引用ClassA,那麼兩個類之間就會形成一個閉環,導緻循環依賴的出現。大家隻需記住一點,

Spring隻能解決單例模式下的Setter循環依賴。

2.1 循環依賴種類

  1. 構造函數的循環依賴。這種

    依賴顯然是解決不了

    的。在 A 的構造方法中依賴 B,在 B 的構造方法中依賴 A 是不行的。
  2. 非單例Bean的循環依賴。這種依賴也是解決不了的。
  3. 單例Bean的循環依賴。本文介紹的就是如何解決單例Bean的循環依賴的問題。

2.2 Spring怎麼解決循環依賴

Spring 在處理屬性循環依賴的情況時主要是通過延遲設定來解決的,當bean被執行個體化後,此時還沒有進行依賴注入,當進行依賴注入的時候,發現依賴的bean已經處于建立中了,那麼通過可以設定依賴,雖然依賴的be