Spring核心之容器初始化過程

2021-09-05 09:51:46 字數 1229 閱讀 7529

我們經常說的spring其實指的是spring framework(spring 框架)

spring的核心就是ioc(控制反轉)和aop(面向切面程式設計)

ioc簡單理解就是控制物件建立的角色由程式設計師反轉為spring ioc容器

其中beanfactory介面是spring早期建立bean物件的工廠介面
spring ioc 容器載入bean資訊的方式有xml配置方式和註解方式

xml配置方式:bean標籤

註解方式:@component、@controller、@service、@repository,需要使用context:component-scan標籤配合使用

spring di(依賴注入)是基於ioc使用的。簡單理解就是bean工廠在生成bean物件的時候,如果bean物件需要裝配乙個屬性,那麼就會通過 di 將屬性值注入給物件的屬性。

依賴注入的方式主要有構造方法注入(了解)和set方法注入(重點)

set方法注入又分為手動裝配方式注入和自動裝配方式注入

1)手動裝配方式(xml方式):bean標籤的子標籤property,需要在類中指定set方法

2)自動裝配方式(註解方式):@autowired註解、@resource註解

spring容器確實堪稱一部設計精密的機器,其內部擁有眾多的元件和裝置。spring的高明之處在於,它使用眾多介面描繪出了所有裝置的藍圖,構建好spring的骨架,繼而通過繼承體系層層推演,不斷豐富,最終讓spring成為有血有肉的完整的框架。所以檢視spring框架的原始碼時,有兩條清晰可見的脈絡:

1)介面層描述了容器的重要元件及元件間的協作關係;

2)繼承體系逐步實現元件的各項功能。

介面層清晰地勾勒出spring框架的高層功能,框架脈絡呼之欲出。有了介面層抽象的描述後,不但spring自己可以提供具體的實現,任何第三方組織也可以提供不同實現, 可以說spring完善的介面層使框架的擴充套件性得到了很好的保證。縱向繼承體系的逐步擴充套件,分步驟地實現框架的功能,這種實現方案保證了框架功能不會堆積在某些類的身上,造成過重的**邏輯負載,框架的複雜度被完美地分解開了。

Spring容器初始化過程

1.preparerefresh 初始化placeholder source,校驗xml檔案 2.建立bean容器,載入並註冊bean。bean並沒有完成初始化,bean例項化未完成 初始化乙個defautllistablebeanfactory,載入beandefintion到beanfactor...

Spring原始碼研究 容器初始化

新建乙個容器,看看後面幹了啥 xmlbeandefinitionreader.loadbeandefinitions resource line 302 我們用string指定了xml配置檔案的路徑,spring要將其封裝到resource方便io,這裡的resource指的就是我們的配置 之後經過...

spring容器初始化的幾種方式

整理了幾種常見的spring容器初始化方式,如下 1 web工程啟動的時候初始化 使用監聽類,web.xml中配置如下 contextconfiglocation classpath spring.xml org.springframework.web.context.contextloaderli...