Spring DI之依賴注入
2022-06-17 21:09 作者:做架構(gòu)師不做框架師 | 我要投稿

前言
在上篇文章“Spring DI三部曲之實例化”中,我們講解了spring bean是如何實例化的,接下來我們會講解是如何依賴注入的。

注意:本文是以5.2.3版本為講解。
讓我們再次回到故事的源頭”
AbstractAutowireCapableBeanFactory#applyPropertyValue()“方法。
步驟一:對屬性值進行依賴注入
BeanWrapperImpl 主要是對容器中完成初始化的 Bean 實例對象進行屬性的依賴注入,即把 Bean 對象設(shè)置到它所依賴的另一個 Bean 的屬性中去。然而,BeanWrapperImpl 中的注入方法實際上由
AbstractNestablePropertyAccessor 來實現(xiàn)的:



步驟二:將指定值設(shè)置為當(dāng)前屬性值

步驟三:實現(xiàn)屬性依賴注入功能
大致業(yè)務(wù)邏輯如下:
getPropertyHoldingValue:調(diào)用屬性的getter(readerMethod)方法,獲取屬性的值
注入array類型的屬性值
注入list類型的屬性值
注入Map類型的屬性值



對于集合類型的屬性,將其屬性值解析為集合后直接賦值給屬性。
對于非集合類型的屬性,使用了 JDK 的反射機制,通過屬性的 getter()方法獲取指定屬性注入以前的值,同時調(diào)用屬性的 setter()方法為屬性設(shè)置注入后的值。
看到這里相信很多人都明白了 Spring 的 setter()注入原理。
時序圖

寫在最后
好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。

標簽: