1.1 Spring IoC容器
從昨天的例子當中我們已經知道spring IoC容器的作用,它可以容納我們所開發的各種Bean。並且我們可以從中獲取各種發布在Spring IoC容器里的Bean,並通過描述得到它。
1.2 Spring IoC容器的設計
Spring IoC容器的設計主要是基於BeanFactory和ApplicationContext兩個接口,其中ApplicationContext是BeanFactory的子接口之一。換句話說BeanFactory是Spring IoC容器所定義的最底層接口,而ApplicationContext是其高級接口之一,並且對BeanFactory功能做了許多有用的擴展,所以在絕大部分的工作場景下,都會使用ApplicationContext作為Spring IoC容器。
|
|||||||
2.1 Spring BeanFactory 容器
這是一個最簡單的容器,它主要的功能是為依賴注入 (DI) 提供支持,這個容器接口在 org.springframework.beans.factory.BeanFactor 中被定義。BeanFactory 和相關的接口,比如BeanFactoryAware、DisposableBean、InitializingBean,仍舊保留在 Spring 中,主要目的是向后兼容已經存在的和那些 Spring 整合在一起的第三方框架。
在 Spring 中,有大量對 BeanFactory 接口的實現。其中,最常被使用的是 XmlBeanFactory 類。這個容器從一個 XML 文件中讀取配置元數據,由這些元數據來生成一個被配置化的系統或者應用。
上次的例子,只修改了測試文件內容:
在這里XmlBeanFactory()API不常用,接下來就是我們常用的ApplicationContext
2.2 Spring ApplicationContext 容器
Application Context 是 BeanFactory 的子接口,也被成為 Spring 上下文。 Application Context 是 spring 中較高級的容器。和 BeanFactory 類似,它可以加載配置文件中定義的 bean,將所有的 bean 集中在一起,當有請求的時候分配 bean。ApplicationContext 包含 BeanFactory 所有的功能。一般情況下,相對於 BeanFactory,ApplicationContext 會更加優秀。
最常被使用的 ApplicationContext 接口實現:
|
|
|
之前橘子那個例子當中已經做過ClassPathXmlApplicationContext的例子了,接下來,讓我們看一個關於 FileSystemXmlApplicationContext 的例子。
例子:
其他的地方沒有變,把之前的ClassPathXmlApplicationContext()API換成 FileSystemXmlApplicationContext ()API去加載bean可用配置xml文件。使用FileSystemXmlApplicationContext和使用ClassPathXmlApplicationContext的區別在於: FileSystemXmlApplicationContext在指定的文件系統路徑下查找xml文件; 而ClassPathXmlApplicationContext是在所有的類路徑(包含JAR文件) 下查找xml文件。
如 :
ApplicationContext context = new FileSystemXmlApplicationContext(“C:/bean.xml”);
ApplicationContext context = new ClassPathXmlApplicationContext(“bean.xml”);