<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MicroFish

    Open & Open hits
    隨筆 - 33, 文章 - 2, 評論 - 4, 引用 - 0
    數據加載中……

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

    ?

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

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

    主站蜘蛛池模板: 亚洲第一区二区快射影院| 亚洲人成综合在线播放| 又粗又大又硬又爽的免费视频| 日韩在线免费电影| 亚洲成a人片在线观看国产| 亚洲午夜av影院| 久久亚洲AV无码精品色午夜麻豆| 亚洲永久中文字幕在线| 日韩大片在线永久免费观看网站| 99麻豆久久久国产精品免费| 在线视频精品免费| 免费一级毛片在线观看| 曰批全过程免费视频免费看| 亚洲午夜成人精品电影在线观看| 一级毛片成人免费看a| 免费视频专区一国产盗摄| 亚洲一区日韩高清中文字幕亚洲| 午夜亚洲国产精品福利| 日韩精品内射视频免费观看| 成人一a毛片免费视频| 久久精品国产精品亚洲蜜月| 亚洲一卡2卡三卡4卡无卡下载| 成人免费区一区二区三区 | 亚洲乱码日产精品一二三| 91香蕉在线观看免费高清| 亚洲国产一成久久精品国产成人综合 | 男人天堂2018亚洲男人天堂| 精品国产麻豆免费网站| 久久精品国产亚洲AV麻豆网站| 春意影院午夜爽爽爽免费| 成年女人18级毛片毛片免费 | 在线观看免费大黄网站| 黄页网站在线免费观看| 国产一精品一AV一免费孕妇| 亚洲国产精品国自产拍电影| 91视频免费观看高清观看完整| 久久久久亚洲av无码专区喷水 | 最近中文字幕无吗高清免费视频| 成人国产网站v片免费观看| 亚洲天堂一区二区| 国产精品无码素人福利免费|