Spring容器總結
一、spring 容器主要分為兩類
一類是Bean工廠(org.springframework,beans.factory.BeanFactory接口定義) 是最簡單的容器,提供了最基礎的依賴注入的支持,二是應用上下文(org.springframework.context.ApplicationContext接口定義)建產在BeanFactory之上的,提供了更多的系統構架服務,如從屬性文件中讀取文本信息,向有關的事件監聽器發布事件等。
BeanFactory
BeanFactory的實現,最常用的是 org.springframework.bean.factory.xml.XmlBeanFactory,根據Xml文件中的定義來裝載Bean。XmlBeanFactory的創建可以通過任意一種Resource為實現;Resource常見的Resource實現有:ByteArrayResource、ClassPathResource、FileSystemResource等。
ApplicationContext
ApplicationContext相對于BeanFactory來說的話,提供了更多的功能,1、提供了文本信息解析工具,包括對國際化(I18N)的支持;2、載入文件資源的通用方法,如載入圖片;3、向注冊為監聽器的Bean發送事件。
ApplicationContext的諸多實現中,經常使用的有三個:
1、ClassPathXmlApplicationContext 從類路徑中的xml文件載入上下文定義信息,把上下文定義文件當成類路徑資源。
2、FileSystemXmlApplicationContext 從文件系統中的XML文件載入上下文定義信息。
3、XMLWebApplicationContext 從Web系統中的XMl文件載入上下文定義信息。
二、BeanFactory與ApplicationContext的區別
應用上下文與Bean工廠最本質的區別是關于單實例Bean的載入方式,BeanFactory延遲加載所有的Bean,直到getBean()方法被調用時,Bean才會被創建。應用上下文則會在上下文啟動后預載入所有的單實例Bean。通過預載入單實例Bean確保當需要使用的時候它們已經準備好了,從而不需要等待它們被創建。