Beanfactory與ApplicationContext

來源:互聯網
上載者:User

標籤:函數   功能   title   國際化   作用   net   nsca   建構函式   lib   

Spring提供了容器實現的兩種方式: 

  Bean工廠(BeanFactory介面),提供了基礎的依賴注入支援;

  應用上下文(ApplicationContext介面),建立在Bean工廠基礎之上,提供了系統架構服務。

現階段,企業開發在選擇上更加傾向於ApplicationContext介面,因為ApplicationContext介面涵蓋了BeanFactory介面,如果使用一個普通的BeanFactory介面,很多其他的功能將不會起作用,如Spring的事物transcation和AOP都不會起作用;但是Beanfactory為什麼又是一種沒有被捨棄的方式!在有些情況下,比如運行在資源受限裝置的內嵌式的應用,對記憶體消耗很大,幾百兆的記憶體也會有很大的影響,此時BeanFactory是更優的選擇。

使用BeanFactory擷取bean的方式(常用XmlBeanFactory)

在Spring中有幾種BeanFactory的實現。其中最常使用的是org.springframework.beans.factory.xml.XmlBeanFactory,它根據XML檔案中的定義裝在Bean。要建立XmlBeanFactory,需要傳遞一個org.springframework.core.io.Resource執行個體給建構函式。此Resource對象提供XML檔案給工廠。

有以下幾種方式配置XML源:

  org.springframework.core.io.ByteArrayResource

  org.springframework.core.io.ClassPathResource

  org.springframework.core.io.DescriptiveResource

  org.springframework.core.io.FileSystemResource

  org.springframework.core.io.InputStreamResource

比如使用FileSystemResource建立一個XmlBeanFactory:

  BeanFactory factory = XmlBeanFactory(new InputStreamResource("D:\userBean.xml"));

  UserBean userBean = (UserBean)factory.getBean("userBean");

三、使用ApplicationContext擷取Bean(三種常用實現)

  表面上,ApplicationContext和BeanFactory差不多。兩者都是載入Bean定義資訊,裝配Bean,根據需要分發Bean。

但是,ApplicationContext提供了更多功能:

  1、提供了文本資訊解析工具,包括對國際化(I18N)的支援。

  2、提供了載入檔案資源的通用方法,如載入圖片。

  3、可以向註冊為監聽器的Bean發送事件。

因此,我們應該更多的使用ApplicationContext,而不是BeanFactory。

注意:二者的關係是ApplicationContext介面擴充於BeanFactory

ApplicationContext的諸多實現中,以下三種經常用到:

  ClassPathXmlApplicationContext

  FileSystemXmlApplicationContext

  XmlWebApplicationContext

第一種和第二種的區別在於,ClassPath可以在整個類路徑(包括JAR檔案)中尋找定義Bean的XML檔案;而FileSystem只能在指定路徑中尋找。

  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext*.xml");

  ApplicationContext context = new FileSystemXmlApplicationContext("D:\applicationContext*.xml");

  

Beanfactory與ApplicationContext

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.