Spring框架

第2章 ?IOC容器和Bean的配置

2.1 IOC和DI

2.1.1 IOC(Inversion of Control):反轉(zhuǎn)控制

在應(yīng)用程序中的組件需要獲取資源時,傳統(tǒng)的方式是組件主動的從容器中獲取所需要的資源,在這樣的模式下開發(fā)人員往往需要知道在具體容器中特定資源的獲取方式,增加了學(xué)習成本,同時降低了開發(fā)效率。

反轉(zhuǎn)控制的思想完全顛覆了應(yīng)用程序組件獲取資源的傳統(tǒng)方式:反轉(zhuǎn)了資源的獲取方向——改由容器主動的將資源推送給需要的組件,開發(fā)人員不需要知道容器是如何創(chuàng)建資源對象的,只需要提供接收資源的方式即可,極大的降低了學(xué)習成本,提高了開發(fā)的效率。這種行為也稱為查找的被動形式。

 

2.1.2 DI(Dependency Injection):依賴注入

IOC的另一種表述方式:即組件以一些預(yù)先定義好的方式(例如:setter 方法)接受來自于容器的資源注入。相對于IOC而言,這種表述更直接。

2.1.3 IOC容器在Spring中的實現(xiàn)

1)在通過IOC容器讀取Bean的實例之前,需要先將IOC容器本身實例化。

2)Spring提供了IOC容器的兩種實現(xiàn)方式

① BeanFactory:IOC容器的基本實現(xiàn),是Spring內(nèi)部的基礎(chǔ)設(shè)施,是面向Spring本身的,不是提供給開發(fā)人員使用的。

② ApplicationContext:BeanFactory的子接口,提供了更多高級特性。面向Spring的使用者,幾乎所有場合都使用ApplicationContext而不是底層的BeanFactory。

 

2.1.4 ApplicationContext的主要實現(xiàn)類

  • ClassPathXmlApplicationContext:對應(yīng)類路徑下的XML格式的配置文件
  • FileSystemXmlApplicationContext:對應(yīng)文件系統(tǒng)中的XML格式的配置文件
  • 在初始化時就創(chuàng)建單例的bean,也可以通過配置的方式指定創(chuàng)建的Bean是多實例的。

 

2.1.5 ConfigurableApplicationContext

  • 是ApplicationContext的子接口,包含一些擴展方法
  • refresh()和close()讓ApplicationContext具有啟動、關(guān)閉和刷新上下文的能力。

 

2.1.6 WebApplicationContext

  • 專門為WEB應(yīng)用而準備的,它允許從相對于WEB根目錄的路徑中完成初始化工作