Spring框架
第2章 ?IOC容器和Bean的配置
2.1 IOC和DI
2.1.1 IOC(Inversion of Control):反轉控制
在應用程序中的組件需要獲取資源時,傳統的方式是組件主動的從容器中獲取所需要的資源,在這樣的模式下開發人員往往需要知道在具體容器中特定資源的獲取方式,增加了學習成本,同時降低了開發效率。
反轉控制的思想完全顛覆了應用程序組件獲取資源的傳統方式:反轉了資源的獲取方向——改由容器主動的將資源推送給需要的組件,開發人員不需要知道容器是如何創建資源對象的,只需要提供接收資源的方式即可,極大的降低了學習成本,提高了開發的效率。這種行為也稱為查找的被動形式。
2.1.2 DI(Dependency Injection):依賴注入
IOC的另一種表述方式:即組件以一些預先定義好的方式(例如:setter 方法)接受來自于容器的資源注入。相對于IOC而言,這種表述更直接。
2.1.3 IOC容器在Spring中的實現
1)在通過IOC容器讀取Bean的實例之前,需要先將IOC容器本身實例化。
2)Spring提供了IOC容器的兩種實現方式
① BeanFactory:IOC容器的基本實現,是Spring內部的基礎設施,是面向Spring本身的,不是提供給開發人員使用的。
② ApplicationContext:BeanFactory的子接口,提供了更多高級特性。面向Spring的使用者,幾乎所有場合都使用ApplicationContext而不是底層的BeanFactory。
2.1.4 ApplicationContext的主要實現類
- ClassPathXmlApplicationContext:對應類路徑下的XML格式的配置文件
- FileSystemXmlApplicationContext:對應文件系統中的XML格式的配置文件
- 在初始化時就創建單例的bean,也可以通過配置的方式指定創建的Bean是多實例的。
2.1.5 ConfigurableApplicationContext
- 是ApplicationContext的子接口,包含一些擴展方法
- refresh()和close()讓ApplicationContext具有啟動、關閉和刷新上下文的能力。
2.1.6 WebApplicationContext
- 專門為WEB應用而準備的,它允許從相對于WEB根目錄的路徑中完成初始化工作