一. 環境搭建
-
導入jar包
- spring-core-x.x.x.RELEASE.jar
- spring-context-x.x.x.RELEASE.jar
- spring-beans-x.x.x.RELEASE.jar
- spring-expression-x.x.x.RELEASE.jar
- commons-logging-x.x.x.jar
-
創建applicationContext.xml配置文件
- 導入約束
- 添加bean
-
創建IOC容器,並容器中獲取bean
二. IOC容器和AOP
IOC和DI
IOC(Inversion of Control):其思想是反轉資源獲取的方向. 傳統的資源查找方式要求組件向容器發起請求查找1資源. 作爲迴應, 容器適時的返回資源. 而應用了 IOC 之後, 則是容器主動地將資源推送給它所管理的組件, 組件所要做的僅是選擇一種合適的方式來接受資源. 這種行爲也被稱爲查找的被動形式
DI(Dependency Injection) — IOC 的另一種表述方式:即組件以一些預先定義好的方式(例如: setter 方法)接受來自如容器的資源注入. 相對於 IOC 而言,這種表述更直接
Spring容器
- 在 Spring IOC 容器讀取 Bean 配置創建 Bean 實例之前, 必須對它進行實例化. 只有在容器實例化後, 纔可以從 IOC 容器裏獲取 Bean 實例並使用.
- Spring 提供了兩種類型的 IOC 容器實現.
- BeanFactory:面向框架本身的.是IOC容器的基礎設施.BeanFactory 是 Spring 框架的基礎設施,面向 Spring 框架本身;ApplicationContext 面向使用 Spring 框架的開發者,幾乎所有的應用場合都直接使用 ApplicationContext 而非底層的 BeanFactory
- ApplicationContext:面向開發者.提供了更多的高級特性. 是 BeanFactory 的子接口.
ClasspathXmlApplicationContext.
三. 依賴注入
-
set方式注入:提供成員變量對應的set方法.
-
構造器注入:提供對應的構造器.
-
注入的細節
- 可以使用value/ref屬性的方式注入,也可以使用/子標籤的方式注入
- 如果遇到特殊字符的注入:
a 使用轉移字符/實體,可以參考手冊.
b 使用<![CDATA[...]]>的方式****
-
List/Map類型的注入
- List/Set/Array:
- Map
- List/Set/Array:
-
內部bean:定義到一個bean的內部的bean。內部bean只能在內部使用.
四. 自動裝配
- 自動裝配引用類型的屬性.
- 使用autowire屬性來指定裝配的方式
- 自動裝配的方式
1. byName:通過要裝配的屬性的名字與 IOC容器中bean的id值進行匹配
2. byType:通過要裝配的屬性的類型與 IOC容器中bean的class值進行匹配,如果匹配到多個兼容的類型,會有異常.
五. bean之間的關係
- 繼承
- 依賴: 依賴就是指定關係,並不會賦值。
六. bean的作用域
- ingleton: 單例(默認值),在IOC容器中,只有一個該bean的實例對象.並且該bean的對象會在IOC容器初始化的時候創建
- prototype: 原型,在IOC容器中,有多個該bean的實例對象.不會在IOC容器初始化的時候創建,而是在每次getBean的時候纔會創建一個新的對象返回.
- request:一次請求期間
- session:一次會話期間.
七. 引入外部的配置文件
db.properties:
八. Bean的生命週期
- 調用構造器創建對象
- 給對象的屬性設置值
- 調用init方法進行初始化
- 使用對象
- 調用destroy方法進行對象的銷燬.
九. bean的配置方式
- 全類名(反射)的方式