在應用開發中,以應用開發人員的身份訪問設計元件時候,往往需要引用
或者呼叫其他組建的服務,這種依賴關係如果固定在元件設計中就會造成
依賴關係的僵化和維護難度的增加。在
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宣告式...