針對於使用注解的方式進行依賴注入。
場景:A類中需要注入B類的實例對象,B類中需要注入A類的實例對象
* spring容器存在三級緩存 一級 二級 三級 先從一級緩存開始獲取
* 三級 singletonFactories : 單例對象工廠的cache 其中的對象還沒有初始化
* 二級 earlySingletonObjects :提前暴光的單例對象的Cache 。其中的對象可能只有部分屬性被賦值【用於檢測循環引用,與singletonFactories互斥】
* 一級 singletonObjects:單例對象的cache 其中的對象完成初始化
*
* 例如: 在創建了A對象之后,singletonFactories三級緩存中就存在此對象,雖然還並不完整(提前暴露)。
* 然后會進行初始化,為屬性B賦值,此時在三個緩存中找不到該對象(假如該對象還沒有創建),
* 然后對於B進行實例化並且初始化,初始化的時候發現需要依賴A對象,
* 可以從三級緩存中取到該對象並且進行賦值,然后將其放入二級緩存 earlySingletonObjects,
* B對象初始化完成,就會放入到一級緩存singletonObjects,
* 接下來就會繼續進行A對象的初始化,可以從二級緩存中獲取到A對象,從一級緩存中找到B對象進行賦值。
*
* A對象初始化完成之后,B對象中指向A對象的引用所對應的對象就是完整的A對象