spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上層應用提供準備就緒的執行環境。其中 bean 快取池為 hashmap 實現
依賴的描述資訊放在beandefinitionregistry登錄檔中
頂層介面是 beanfactory,它最主要的方法就是getbean(string beanname),該方法從容器中返回特定名稱的 bean,beanfactory 的功能通過其他的介面得到不斷擴充套件:
hierarchicalbeanfactory父子級聯
父子級聯 ioc 容器的介面,子容器可以通過介面方法訪問父容器; 通過hierarchicalbeanfactory 介面, spring 的 ioc 容器可以建立父子層級關聯的容器體系,子容器可以訪問父容器中的 bean,但父容器不能訪問子容器的 bean。spring 使用父子容器實現了很多功能,比如在 spring mvc 中,展現層 bean 位於乙個子容器中,而業務層和持久層的 bean 位於父容器中。這樣,展現層 bean 就可以引用業務層和持久層的 bean,而業務層和持久層的 bean 則看不到展現層的 bean。
singletonbeanregistry執行期間註冊單例 bean
定義了允許在執行期間向容器註冊單例項 bean 的方法;對於單例項( singleton)的 bean來說,beanfactory 會快取 bean 例項,所以第二次使用 getbean() 獲取 bean 時將直接從ioc 容器的快取中獲取 bean 例項。spring 在 defaultsingletonbeanregistry 類中提供了乙個用於快取單例項 bean 的快取器,它是乙個用hashmap 實現的快取器,單例項的 bean 以beanname 為鍵儲存在這個 hashmap 中
Spring IOC部分總結
di dependency injection 依賴注入 在spring框架負責建立bean物件時,動態的將依賴物件注入到baen元件 testold 例子 建立userservice,實現userserviceimpl 建立單元測試 test 相當於new 物件 並且賦值 bean的作用域 單例和...
spring IOC容器的擴充套件
在此之前已經完成了ioc對 xml的解析和例項化工作,接下來需要分析 spring 的高階版本對 ioc容器的功能擴充套件 分析如下 synchronized this.startupshutdownmonitor 接下來,即開始對上面的步奏進行一一的講解 preparerefresh 準備重新整理...
springIOC容器詳解
springioc容器又被搞了,我tm今天要搞定這個東西 我目前看過最好的講解是這篇作者的 spring的ioc容器在實現控制反轉和依賴注入的過程中,可以劃分為兩個階段 這兩個階段中,ioc容器分別作了以下這些事情 2 ioc容器及ioc容器如何獲取物件間的依賴關係 spring中提供了兩種ioc容...