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