1. 程式人生 > >spring bean定義

spring bean定義

spring bean定義

  • id和name

    id有命名限制,比如必須以字母開頭,在配置文件中id必須唯一

    name沒有命名限制,在配置文件中可以有多個name一樣的bean,getBean時返回最後定義的那個bean

    如果二者都沒定義,例 <bean class="abc.a">, 默認以全限定類名作為bean名,getBean("abc.a");

    如果二者都沒定義,並有多個<bean class="abc.a">,則第一個bean用getBean("abc.a")獲取,第二個用getBean("abc.a#1")獲取,以此類推。

  • 屬性註入

    命名規則,要麽前兩個字母都大寫,要麽全部小寫

    值為字面量時註意5個特殊字符&<>"',如果值中包含特殊字符,有兩種解決辦法,一種是<![CDATA[ ]]>,另一種是特殊字符替換,比如<替換為&lt;

    值為引用時可用<ref>元素,包含三個屬性:bean(引用同一個容器或父容器的Bean)、local(只引用同一個配置文件的Bean)、parent(引用父容器的Bean)

    如果不用引用,也可以用內部Bean的配置方式,即Bean的定義在Property元素內,這個Bean只能為對應的外部Bean所用,不能用於其他Bean的引用

    null值,如果屬性值想為null值,不能像這樣<property name="abc"><value></value></property>,這樣代表值為空字符串,應該為這樣<property name="abc"><value><null/></value></property>

    properties與map類似,只是properties的鍵值只能是字符串

  • 構造函數註入

    配置項中最好加索引和類型,比如:<constructor-arg index="0" type

    ="java.lang.String"> <value>abc</value></constructor-arg>,0代表第一個參數,type代表參數類型,這樣可以精確定位用類中的哪個構造函數

  • 父子bean(集合合並)

    子bean可繼承父bean的屬性,父bean一般會設置abstract="true"(表示不需要實例化),子類中要寫 parent="xxx" ,如果屬性同名,子bean會覆蓋父bean屬性,如果想屬性合並,比如父類有一個屬性是set類型,子類也有一個屬性是set類型,如果想屬性合並,需要在對應屬性中寫merge="true"

  • 簡化配置

  • 技術分享圖片

    技術分享圖片

    當然還可以更簡潔,即引用p命名空間,格式p:屬性名="xxx" ,p:屬性名_ref="xxx".




    spring bean定義