MicroFish

          Open & Open hits
          隨筆 - 33, 文章 - 2, 評論 - 4, 引用 - 0

          導(dǎo)航

          公告

          自我評價

            1.精通外語:本人土家語、漢語、英語聽說讀寫俱佳;本人熟悉java語言和c語言,讀寫能力較強(qiáng),聽說能力一般
            2.上知天文:本人潛心研究過太陽(SUN)的光芒和熱量,熟悉月食(Eclipse)的原理
            3.下知地理:本人潛心研究過Google Maps和Edushi的3D地圖,懂得坐地日行八萬里的原理
            4.艱苦樸素:本人能在惡劣環(huán)境下生存,善于在陽光燦爛的春天(Spring)進(jìn)行冬眠(Hibernate)
            5.精通古文:本人古文修養(yǎng)好,曾潛心研究過遠(yuǎn)古的象形文字-甲骨文(Oracle)

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章檔案

          其他人的鏈接

          我自己的鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          《Pro Spring》學(xué)習(xí)筆記(5)--配置BeanFactory(2)

          ?

          ??????BeanFactory中的每個bean都必須至少有一個唯一的名字,Spring為了靈活的支持各種情形,使用了相對復(fù)雜的命名體系。如果我們?yōu)閎ean指定了id屬性,那么id屬性的值將成為bean的名稱,如果沒有指定id屬性,Spring將使用name屬性的第一個值(多個值用逗號或者分號分隔)作為bean的名稱,如果name屬性也沒有指定,Spring將使用bean的類名(包括package的完整類名)來作為bean的名稱,對于多個bean使用相同類名的情況,Spring會在類名后面添加#2,#3等序號來加以區(qū)別。不管怎么說,使用id屬性來指定bean的名稱總是一個不錯的選擇。
          ???? 在Spring中,所有bean默認(rèn)都是以單例(singleton)形態(tài)存在的,也就是說我們通過BeanFactory的getBean方法獲取的同一名稱的bean是完全相同的,即:beanFactory.getBean("name")==beanFactory.getBean("name")。更改bean的形態(tài)為非singleton(原型的,prototype)是很容易的,只需在bean標(biāo)簽中,指定singleton屬性為false就可以了。
          <bean id="nonSingleton" class="java.lang.String" singleton="false">
          ??? ...
          </bean>
          ????? 為了簡化配置,Spring還提供了自動組裝(Auto-Wiring)bean的功能,有四種自動組裝方式:根據(jù)名稱(byName),根據(jù)類型(byType),構(gòu)造子(Constructor)以及自動偵測(autodetect)。
          ????? 使用根據(jù)名稱自動組裝時,Spring根據(jù)bean的屬性的名稱去尋找同名的bean配置。
          ????? 使用根據(jù)類型自動組裝時,Spring根據(jù)bean的屬性的類型去尋找同類型的bean配置,如果有多個同類型的bean配置,那么Spring將會拋出異常,以表示無法確定使用哪個。
          ????? 使用構(gòu)造子自動組裝和使用根據(jù)類型自動組裝比較類似,需要注意的是,使用構(gòu)造子自動組裝時,Spring會匹配盡可能多的參數(shù)。例如,我們有一個bean擁有兩個構(gòu)造函數(shù),第一個接收一個String類型的參數(shù),第二個接收一個String類型和一個Integer類型的參數(shù),這時,如果在beanFactory的配置文件中有一個String類型的bean配置和一個Integer類型的bean配置,那么Spring將會使用第二個擁有兩個參數(shù)的構(gòu)造函數(shù)。
          ?????? 使用自動偵測組裝時,Spring會在根據(jù)類型自動組裝和根據(jù)構(gòu)造子自動組裝之間自動作出選擇,依據(jù)是:如果bean擁有默認(rèn)的(無參數(shù)的)構(gòu)造函數(shù),那么Spring使用根據(jù)類型自動組裝的方式,否則,使用根據(jù)構(gòu)造子自動組裝的方式。
          ?????? 有時候,我們可能會有多個bean擁有共同的類型,或是實現(xiàn)一些共同的接口,因此它們會有一些相同的配置,如果能將這些相同的配置提取出來,各個bean只要繼承這些相同的配置,然后添加自己特有的配置,將會大大減少重復(fù)的配置,降低發(fā)生錯誤的可能。Spring的bean繼承機(jī)制就是出于這樣的目的而提供的。在Spring中,我們可以將這些相同的配置提取出來,配置成一個parent bean,然后各個bean(child bean)可以繼承parent bean,在child bean中,可以覆寫parent bean中的配置,也可以添加自己的配置。parent bean是通過child bean的bean標(biāo)簽的parent屬性來指定的。
          <bean id="inheritParent" class="com.apress.prospring.ch4.inheritance.SimpleBean">
          ??? <property name="name">
          ??????? <value>Rob Harrop</value>
          ??? </property>
          ??? <property name="age">
          ??????? <value>22</value>
          ??? </property>
          </bean>
          <bean id="inheritChild" class="com.apress.prospring.ch4.inheritance.SimpleBean"
          parent="inheritParent">
          ??? <property name="age">
          ??????? <value>35</value>
          ??? </property>
          </bean>
          ????? 需要注意的是,bean的繼承體系并不完全等同于java的類繼承體系,我們完全可以在數(shù)個擁有相同類型的bean上使用繼承,這不會帶來任何問題。因此,相對于java的繼承體系來說,Spring 的bean繼承體系更類似于模板類型。

          posted on 2006-12-21 10:22 劉璐 閱讀(462) 評論(0)  編輯  收藏 所屬分類: spring

          主站蜘蛛池模板: 隆德县| 龙南县| 龙陵县| 舞阳县| 奉化市| 宁陵县| 启东市| 民勤县| 桓台县| 长宁县| 鄂尔多斯市| 临高县| 安泽县| 吉首市| 青河县| 清河县| 盘山县| 苏尼特右旗| 大渡口区| 嵩明县| 巫溪县| 永定县| 盘山县| 盐山县| 嘉峪关市| 隆子县| 五莲县| 定远县| 景谷| 项城市| 宁城县| 萨嘎县| 肥西县| 原平市| 隆回县| 区。| 巴彦淖尔市| 南丹县| 腾冲县| 开原市| 泰宁县|