核心元件詳解
bean 元件
前面已經說明了 bean 元件對 spring 的重要性,下面看看 bean 這個元件式怎麼設計的。bean 元件在 spring 的 org.springframework.beans 包下。這個包下的所有類主要解決了三件事:bean 的定義、bean 的建立以及對 bean 的解析。對 spring 的使用者來說唯一需要關心的就是 bean 的建立,其他兩個由 spring 在內部幫你完成了,對你來說是透明的。
spring bean 的建立時典型的工廠模式,他的頂級介面是 beanfactory,下圖是這個工廠的繼承層次關係:
beanfactory 有三個子類:listablebeanfactory、hierarchicalbeanfactory 和 autowirecapablebeanfactory。但是從上圖中我們可以發現最終的預設實現類是 defaultlistablebeanfactory,他實現了所有的介面。那為何要定義這麼多層次的介面呢?查閱這些介面的原始碼和說明發現,每個介面都有他使用的場合,
它主要是為了區分在 spring 內部在操作過程中物件的傳遞和轉化過程中,對物件的資料訪問所做的限制。例如 listablebeanfactory 介面表示這些 bean 是可列表的,而 hierarchicalbeanfactory 表示的是這些 bean 是有繼承關係的,也就是每個 bean 有可能有父 bean。autowirecapablebeanfactory 介面定義 bean 的自動裝配規則。這四個介面共同定義了 bean 的集合、bean 之間的關係、以及 bean 行為。
bean 定義的類層次關係圖
bean 的定義就是完整的描述了在 spring 的配置檔案中你定義的 節點中所有的資訊,包括各種子節點。當 spring 成功解析你定義的乙個 節點後,在 spring 的內部他就被轉化成 beandefinition 物件。以後所有的操作都是對這個物件完成的。
bean 的解析過程非常複雜,功能被分的很細,因為這裡需要被擴充套件的地方很多,必須保證有足夠的靈活性,以應對可能的變化。bean 的解析主要就是對 spring 配置檔案的解析。這個解析過程主要通過下圖中的類完成:
當然還有具體對 tag 的解析這裡並沒有列出。
context 元件
context 在 spring 的 org.springframework.context 包下,前面已經講解了 context 元件在 spring 中的作用,他實際上就是給 spring 提供乙個執行時的環境,用以儲存各個物件的狀態。下面看一下這個環境是如何構建的。
再往下分就是按照構建 context 的檔案型別,接著就是訪問 context 的方式。這樣一級一級構成了完整的 context 等級層次。
標識乙個應用環境
利用 beanfactory 建立 bean 物件
儲存物件關係表
能夠捕獲各種事件
context 作為 spring 的 ioc 容器,基本上整合了 spring 的大部分功能,或者說是大部分功能的基礎.
第13章 Spring框架的設計理念與設計模式分析
13.1 spring的骨骼架構 最核心的元件是 core,context,bean。13.1.1 spring的設計理念 spring最核心的元件是bean元件。spring解決的最關鍵的問題 物件之間的依賴關係用配置檔案來管理,也就是依賴注入機制。這個依賴注入在ioc容器中管理。13.1.2 核...
Spring框架的設計理念於設計模式分析(一)
1 spring的特性功能 web transaction。aop jdbc orm 關係對映 2 spring的骨骼架構 核心元件context 核心元件bean 核心元件core。核心思想 ioc 控制反轉和一來注入 控制反 物件的建立不是手動建立,而是將建立物件的過程交於ioc容器注入到物件。...
spring的框架設計理念設計模式分析
spring的三大核心元件beans context core。其中最主要的是beans。我們使用spring的主要原因是它可以把物件之間的依賴關係用配置檔案管理,也就是spring的依賴注入。1 各元件詳解 bean元件 bean元件在spring的org.springframework.bean...