Spring原始碼解讀之bean注入依賴

2021-08-15 13:14:12 字數 1500 閱讀 6380

在應用開發中

,以應用開發人員的身份訪問設計元件時候,往往需要引用

或者呼叫其他組建的服務,這種依賴關係如果固定在元件設計中就會造成

依賴關係的僵化和維護難度的增加。在

spring

中通過ioc

容器把資源的獲取方

向反轉,讓

ioc容器住的管理這些依賴關係,將這些關係注入到元件中,

那麼會讓這些依賴關係的適配和管理國家靈活。

ioc容器設計中有兩個主要容器系列,乙個是

beanfactory

介面的簡單

容器系列,這系列容器實現;了容器的最基本的功能,另乙個是

應用上下文,作為容器的高階形態而存在。那麼這兩個

容器到底有什麼區別呢?

beanfactory

實際上是通過繼承一系列介面來擁有一系列的功能,並且通過

getbean()

方法來拿到

bean

,而實際上也是通過

繼承一系列介面,只不過在

beanfactory

的基礎上多做了一些擴充套件功能,那麼多

出哪些擴充套件的功能呢 ?

1、比如說支援不同的資訊源,因為

messagesource

介面支援

國際化的多語言功能,

2、訪問資源,可以從不同的

i/o途徑得到

bean

的定義資訊

3、支援應用事件,繼承介面

介面上面所講的容器有什麼作用呢?

它滿足最基本的功能規範,也就是滿足

beanfactory

這個基本的介面的定義,在

spring

中提供的基本的

ioc容器介面定義和實現的基礎上,

spring

通過定義

beandefinition

來管理基於

spring

應用中各種物件之間的依賴關係。

那麼beandefinition

到底是什麼呢

?beandefinition

相當於一種資料型別,是容器實現依賴反轉功能的核心資料結

構。首先

beandefinition

是乙個介面,在

spring

中存在三種實現,

rootbeandefinition,childbeandefinition,genericbeandefinition

三種實現都繼承了

abstractbeandefinition,

其中beandefinition

是配置文

件在容器內部的表現形式,對於

元素標籤擁有的

class,scope,

lazy-init

等配置屬性,

beandefinition

也會有對應的

beanclass,scope,

lazyinit

屬性與之對應。

關於spring原始碼解讀

spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...

Spring 原始碼解讀 推薦流程

spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...

Spring 原始碼解讀 推薦流程

spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...