Spring之IoC容器
Spring框架的主要特性之一是IoC(控制反轉)容器,它負責管理應用程序中的對象,它通過依賴注入來實現控制反轉。
org.springframework.beans 和 org.springframework.context 包路徑下的接口或者類為Spring IoC容器的實現提供最基本的支持。
BeanFactory和ApplicationContext接口代表了Spring IoC容器。
- BeanFactory是Spring IoC容器的根接口,它提供了管理bean的基本功能。
- ApplicationContext是BeanFactory的子接口,它具備BeanFactory的所有功能;此外,它還提供了更多特定于企業的功能。

BeanFactory
BeanFactory使得開發人員能夠讀取bean的定義并訪問對應實例,如下:
InputStream is = new FileInputStream("beans.xml"); BeanFactory factory = new XmlBeanFactory(is); //Get bean HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
其他創建BeanFactory的方法如下:
Resource resource = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource);
或者
Resource resource = new ClassPathResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource);
BeanFactory methods

此處簡單解釋一下其中部分方法,見下表:

類圖


ApplicationContext
由于ApplicationContext包含了BeanFactory的所有功能,所以通常建議使用它而不是BeanFactory。
類圖

Note:
BeanFactory 是 Spring 框架的基礎設施,面向 Spring 框架本身;而ApplciationContext 面向使用 Spring 框架的開發者,幾乎所有應用場合都直接使用 ApplicationContext,而非底層的 BeanFactory
ApplicationContext context = new FileSystemXmlApplicationContext("beans.xml"); HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
延申閱讀
控制反轉是一種思想
依賴注入是一種實現方式
詳解:
將控制反轉作為一種設計指南,可以達到以下目的:
- 某個任務的執行與實現之間存在解耦,每個模塊都可以專注于它的設計目的
- 更換模塊對其他模塊沒有副作用
Spring 框架使用依賴注入作為實現控制反轉的方式,但是控制反轉還有其他實現方式,如下:
- 使用工廠模式
- 使用服務定位器模式(ServiceLocator)
補充:
不能將控制反轉和依賴注入等同。

浙公網安備 33010602011771號