我們經常說的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...