紅 石 那一年

          常用鏈接

          統(tǒng)計(jì)

          最新評論

          Spring 學(xué)習(xí)筆記(二)

          DI-------Bean 裝配

          容器可以創(chuàng)建組件,裝配和配置組件,以及管理它們的整個(gè)生命周期。

          容器是Spring框架的核心。Spring容器使用DI管理所有組成應(yīng)用系統(tǒng)的組件。這包括在協(xié)作組件之間建立關(guān)聯(lián)。而且這些對象簡潔易懂,支持重用,容易被測試。

          Spring提供了多種容器實(shí)現(xiàn),并分為兩類。
          一是:Bean工廠org.springframework.beans.factory.BeanFactory接口定義,是最簡單的容器,提供了基礎(chǔ)的依賴注入支持。
          二是:應(yīng)用上下文org.springframework.context.ApplicationContext接口定義,建立在Bean工廠之上,提供了系統(tǒng)構(gòu)架服務(wù)。

          BeanFactory介紹

          Bean工廠是一個(gè)通用的工廠,可以創(chuàng)建和分發(fā)各種類型的Bean.除了簡單的實(shí)例化和分發(fā)應(yīng)用對象以外,Bean工廠還有很多工作需要做。由于其知道應(yīng)用系統(tǒng)中的很多對象,所以它可以在實(shí)例化這些對象的時(shí)候,創(chuàng)建協(xié)作對象間的關(guān)聯(lián)關(guān)系。這樣就把配置的負(fù)擔(dān)從Bean自身及Bean的調(diào)用者中脫離出來。結(jié)果,Bean工廠分發(fā)出來的Bean都已經(jīng)被配置好了,都得到了它們的關(guān)聯(lián)對象,已經(jīng)可以被使用了。Bean工廠還要參與到Bean的生命周期中,調(diào)用用戶定義的初始化和銷毀方法。

          例如:

          BeanFactory factory = new XmlBeanFactory(new FileSystemResource("c:/beans.xml"));

          這行代碼告訴Bean工廠從XML文件中讀取Bean的定義信息。但是,現(xiàn)在Bean工廠還沒有實(shí)例化Bean。Bean是被延遲載入到Bean工廠中的,就是說Bean工廠會(huì)立即把Bean定義信息載入進(jìn)來,但是Bean只有在被需要的時(shí)候才能被實(shí)例化。

          MyBean myBean = (MyBean) factory.getBean("myBean");

          當(dāng)getBean()方法被調(diào)用的時(shí)候,工廠才會(huì)實(shí)例化Bean并且使用依賴注入設(shè)置Bean的屬性。

          使用應(yīng)用上下文介紹

          表面上ApplicationContext和BeanFactory差不多。兩者都是載入Bean定義信息,裝配Bean,根據(jù)需要分發(fā)Bean。但是ApplicationContext提供了更多的功能:
              a.應(yīng)用上下文提供了文本信息解析工具,包括對國際化的支持。
              b.應(yīng)用上下文提供了載入文件資源的通用方法,如載入圖片。
              c.應(yīng)用上下文可以向注冊為監(jiān)聽器的Bean發(fā)送事件。
          應(yīng)用上下文的三種實(shí)現(xiàn):
              1.ClassPathXmlApplicationContext
              2.FileSystemXmlApplicationContext
              3.XmlWebApplicationContext

          除了應(yīng)用上下文提供的附加功能外,與BeanFactory另一個(gè)重要的區(qū)別是關(guān)于單實(shí)例Bean是如何被載入的。Bean工廠延遲載入所有的Bean,直到getBean()方法被調(diào)用時(shí)Bean才被創(chuàng)建。應(yīng)用上下文則更聰明一點(diǎn),它會(huì)在上下文啟動(dòng)后預(yù)載入所有的實(shí)例Bean。通過預(yù)載入單實(shí)例Bean,確保當(dāng)你需要的時(shí)候它們已經(jīng)準(zhǔn)備好了,你的應(yīng)用不需要等待它們被創(chuàng)建。


          posted on 2008-09-10 16:30 紅石 閱讀(141) 評論(0)  編輯  收藏 所屬分類: spring

          主站蜘蛛池模板: 行唐县| 西藏| 璧山县| 杭锦后旗| 桃源县| 亳州市| 阆中市| 芜湖县| 嘉禾县| 禄劝| 武夷山市| 三台县| 惠州市| 富平县| 定边县| 洛隆县| 洛浦县| 洛川县| 思茅市| 新兴县| 莱芜市| 泉州市| 平谷区| 贡嘎县| 合江县| 土默特右旗| 郓城县| 赞皇县| 南川市| 河曲县| 汝州市| 英超| 开化县| 广南县| 右玉县| 宁都县| 淅川县| 远安县| 大渡口区| 门头沟区| 农安县|