• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    Spring如何在XML文件中指定Bean之間的引用關系

    Spring是一個IOC(DI)的容器框架,一個典型的Spring項目需要創建一個或多個Bean,這些Bean的配置信息都在配置文件中,Bean的配置文件可以放在classpath下,也可以放在其他目錄下。下面我們講解如何在配置文件中指定兩個Bean之間的依賴關系,創建兩個類Cat和Person,Person類中的一個屬性為Cat類型,如下圖所示。

    工具/材料

    Spring Tool Suite 3.9.1.RELEASE

    操作方法

    • 01

      我們在創建的Cat類中定義4個屬性,并且創建Cat類的無參構造、有參構造、getter和setter方法,重寫toString()方法。創建Person類,同樣創建getter和setter方法,重寫toString()方法。我們為Cat類創建一個bean,id為cat2,bean的創建方式沿用上文,不明白的朋友可以查看小編之前的文章。接下來創建Person類的bean,使用屬性注入的方法添加屬性,可以使用property的ref屬性建立bean之間的引用關系,如下圖所示。我們在運行結果中可以看出打印Person類的對象時,輸出的信息有cat的值。

    • 02

      組成應用程序的bean經常需要相互協作完成應用程序的功能,要使bean能夠相互訪問,就必須在bean配置文件中指定對bean的引用。我們也可以使用property的<ref>元素來設置bean之間的引用,如下圖所示。

    • 03

      我們也可以在屬性或構造器里包含bean的聲明,這樣的bean稱為內部bean,可以不定義id,不能被外部引用。當bean實例僅僅給一個特定的屬性使用時,可以將其聲明為內部bean,內部bean聲明直接包含在<property>或<constructor-arg>元素里,不需要設置任何id或name屬性,如下圖所示。

    • 04

      上述步驟介紹的為使用屬性注入的方式引入外部bean,下面介紹使用構造器注入的方式引入外部bean,用法大體上是相同的,都是使用ref屬性,我們先為Person類增加有參構造,并且再創建一個無參構造,使用構造器注入的結果如下圖所示。

    • 05

      我們將Person類全部屬性均使用構造器注入,均在<constructor-arg>元素里添加屬性值即可,結果如下圖所示。

    • 06

      下面介紹如何在為bean的屬性注入null值,可以使用<null/>元素標簽為bean的字符串或其它對象類型的屬性注入null值。如下圖所示,我們不需要給Person類的對象注入一個Cat類對象這個屬性,因此使用<null/>元素表示,如下圖所示。

    • 07

      最后我們介紹級聯屬性,Spring支持級聯屬性的配置,我們可以在創建Person類的bean時為Cat類的某一個屬性賦值,前提是person的屬性car必須先初始化才可以為級聯屬性賦值,否則會有異常,寫法如下圖1所示,我們為cat這個bean在person這個bean中設置price屬性,運行結果如下圖2所示。

    • End

    特別提示

    注意使用xml文件的方式創建bean實例,需要類中有一個無參構造方法。若類中沒有創建任何構造方法,則默認有一個無參構造;若類中創建了有參構造,則必須另外創建一個無參構成。

    • 發表于 2017-11-04 00:00
    • 閱讀 ( 876 )
    • 分類:電腦網絡

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆