讀書記 Spring框架設計理念《一》

2021-08-27 22:58:42 字數 1917 閱讀 9728

spring元件概覽圖

一、spring的核心元件為什麼是bean?

spring元件眾多,核心元件莫非有三,context、core以及bean。而三者之中最核心的莫過於bean。其實,spring本身框架可以理解為面向bean的程式設計(bean oriented programming)。spring作為目前最優秀的框架之一,它最核心的問題在於解決了乙個非常關鍵的乙個問題,它可以把物件之間的依賴關係抽離出來通過配置檔案進行管理,也就是spring最核心的理念 依賴注入--di(dependency injection),而這種關係是通過ioc容器實現統一管理。而ioc容器又是什麼呢?它其實就是通過bean包裝的各種物件。spring實現了把通過bean包裝好的物件進行統一管理和額外操作的目的。spring根據各個bean設計它的生存環境,並讓它在該環境中根據一定的約束不停的運動,達到與環境或者其它個體進行資訊交換,這就是spring的設計理念。

二、spring的核心元件是如何協同工作的?

bean包裝的object,而為object中的資料提供生存環境,就是context所要解決的問題,對於context來講,它的作用就是發現各個bean之間的關係,並為這種關係建立良好的維護。所以我們可以理解context其實就是各種bean之間的關係集合,這個關係集合我們可以把它稱作ioc容器。而在這個過程中,core有什麼作用呢?我們可以把core當作util來理解,core就是在發現、建立、維護每個bean之間關係所需要用到的一系列工具。舉個例子,如果bean當作一場演出中的各個演員, 那麼context就好比把各個演員串聯起來的劇本,而core則可以理解為這台演出中的各種道具。

三、bean元件詳解

bean位於org.sringframework.beans包下,這個包主要解決了三個問題,bean的定義、bean的建立以及bean的解析。對於使用者來說,我們通常只需要關注bean的建立,其它兩個問題在spring內部自身解決。

bean的建立模式是典型的工廠方法, 頂級介面是beanfactory,它下面有三個子類,而最終的實現方式則都是由defaultlistablebeanfactory來實現,各個子類都有各自的使用場景,主要作用是區分spring在內部物件的處理時,對資料所作出的限制和約束。

bean的定義由beandefinition描述,bean的定義需要在配置檔案中定義的節點詳細描述,當spring成功解析乙個bean節點時,它會自動轉化成beandefinition物件,以後所有的操作都是基於beandefinition來進行的。

而bean的解析則相當複雜,因為為了保證足夠的靈活性,被擴充套件的地方很多,以應對可能的變化。

四、context元件詳解

總體來講,context主要完成的功能有以下四點:

1.標識乙個應用環境;

2.利用beanfactory建立bean物件;

3.儲存物件之間的各種關係;

4.能夠監聽各種事件;

五、core元件詳解

core位於org.springframework.core包下,前面我們講到core包可以理解為乙個utils類,這裡我們以資源的訪問方式為例進行說明。

在resources介面中封裝了各種可能的資源型別。它繼承了inputstreasource介面,在該介面中實現了getinputstream方法, 返回的是inputstream類。因此所有的資源都可以通過inputstream類獲取,這樣實現了遮蔽資源提供者和資源型別的不同。同時對於資源載入的問題, 是通過resourcesloader來實現的,遮蔽了資源載入的差異。對於使用者來說,通過乙個介面來遮蔽資源的型別以及載入方式,這種設計理念是值得借鑑的。context在建立執行環境時,把資源的載入、解析和描述工作交給了resourcespatternresolver來完成。它相當於乙個接頭人,把資源的載入、解析、和定義整合在一起。交給context使用。

spring的框架設計理念設計模式分析

spring的三大核心元件beans context core。其中最主要的是beans。我們使用spring的主要原因是它可以把物件之間的依賴關係用配置檔案管理,也就是spring的依賴注入。1 各元件詳解 bean元件 bean元件在spring的org.springframework.bean...

Laya 小遊戲通用框架設計理念

當前在用laya做小遊戲開發,做了幾個專案,總結了一下遊戲中所需要的一些模組,大概理了一下,然後寫成一套自己習慣使用的框架 總結了一下其中的模組 大概要分為一下模組 1.base 模組 存放一些基類,以供後續繼承開發使用 如 單例的基類 2.asset 資源載入模組 用於laya 載入資源 3.da...

Spring框架的設計理念於設計模式分析(一)

1 spring的特性功能 web transaction。aop jdbc orm 關係對映 2 spring的骨骼架構 核心元件context 核心元件bean 核心元件core。核心思想 ioc 控制反轉和一來注入 控制反 物件的建立不是手動建立,而是將建立物件的過程交於ioc容器注入到物件。...