Spring ——Spring IoC容器詳解(圖示)


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容器。

序號 容器 & 描述
1

Spring BeanFactory 容器

它是最簡單的容器,給 DI 提供了基本的支持,它用 org.springframework.beans.factory.BeanFactory 接口來定義。BeanFactory 或者相關的接口,如 BeanFactoryAware,InitializingBean,DisposableBean,在 Spring 中仍然存在具有大量的與 Spring 整合的第三方框架的反向兼容性的目的。

2

Spring ApplicationContext 容器

該容器添加了更多的企業特定的功能,例如從一個屬性文件中解析文本信息的能力,發布應用程序事件給感興趣的事件監聽器的能力。該容器是由 org.springframework.context.ApplicationContext 接口定義。

 
   

 

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 接口實現:

  • FileSystemXmlApplicationContext:該容器從 XML 文件中加載已被定義的 bean。在這里,你需要提供給構造器 XML 文件的完整路徑。

  • ClassPathXmlApplicationContext:該容器從 XML 文件中加載已被定義的 bean。在這里,你不需要提供 XML 文件的完整路徑,只需正確配置 CLASSPATH 環境變量即可,因為,容器會從 CLASSPATH 中搜索 bean 配置文件。
  • WebXmlApplicationContext:該容器會在一個 web 應用程序的范圍內加載在 XML 文件中已被定義的 bean。

之前橘子那個例子當中已經做過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”);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM