1. 程式人生 > >Spring 配置檔案中 Bean 的 property 屬性使用示例

Spring 配置檔案中 Bean 的 property 屬性使用示例

在 Spring 配置檔案中,beans 元素是 spring-beans 內容模型的根結點,bean 元素是 beans 元素的子節點,通常 bean 元素用於定義 JavaBean。而 bean 元素包含以下幾種子元素,它們分別是:

constructor-arg 元素property 元素lookup-method 元素replace-method 元素
在 Spring 配置檔案中,使用者可以通過 Bean 的屬性 property 進行引數注入。使用 property 屬性不但可以將 String、int 等字面值注入到 Bean 中,還可以將集合、Map 等型別注入到 Bean 中,此外還可以注入其他的 Bean。
(1)字面值:一般是指可用字串表示的值,這些值可通過 <value> 元素標籤進行注入。在預設情況下,基本資料型別及其封裝類、String 等型別都可以採取字面值注入的方式。

(2)引用其他的 Bean:Spring IoC 容器中定義的 Bean 可以互相引用,IoC 容器則充當了介紹人的角色。<ref> 元素可以通過 bean、local、parent 三個屬性引用其他 Bean 的屬性,其中 bean 可以引用統一配置檔案中或者父容器中的 Bean,local 只能引用同一配置檔案中的 Bean,parent 只能引用父容器中的 Bean。
public class Boss {    private Car car;    public void setCar(Car car) {        this.car = car;    }}<bean id="car" class="***" /><bean id="boss" class="***">  <property name="car">    <ref bean="car"></ref>  </property></bean

(3)內部 Bean:當 Spring IoC 容器中的 bean1 只會被 bean2 引用,而不會被容器中任何其他 Bean 引用的時候,則可以將這個 bean1 以內部 Bean 的方式注入到 bean2 中。跟 Java 中的內部類是相似的。

<bean id="boss" class="***">  <property name="car">    <bean class="***">      <property name="price" value="200">    </bean>  </property></bean>

(4)null 值:有些時候,需要為某個 bean 的屬性注入一個 null 值,在這裡我們需要使用專用的 <null/> 元素標籤,通過它可以為其他物件的屬性注入 null 值。<bean id="car" class="***">  <property name="brand">    <null/>  </property></bean>

(5)級聯屬性:跟 Struts、Hibernate 等框架一樣,Spring 支援級聯屬性的配置,例如當我們希望在定義 bean1 時直接為 bean2 的屬性提供注入值,則可以採取以下的配置方式:(boss.getCar().setBrand())
public class Boss {    private Car car;    public void setCar(Car car) {        this.car = car;    }}<bean id="boss" class="***">  <property name="car.brand">    <value>賓士E級</value>  </property></bean>

(6)集合型別屬性:java.util 包中的集合類是最常用的資料結構型別,主要包括 List、Set、Map 以及 Properties,Spring 為這些集合型別屬性提供了專門的配置元素標籤:

①  當屬性為 java.util.List 的時候,

 

 
  1. public class Boss {

  2. private List favorites = new ArrayList();

  3. public List getFavorites() {

  4. return favrites;

  5. }

  6. public void setFavorites(List favrites) {

  7. this.favrites = favorites;

  8. }

  9. }

 
  1. <bean id="boss" class="***">

  2. <property name="favorites">

  3. <list>

  4. <value>唱歌</value>

  5. <value>運動</value>

  6. <value>讀書</value>

  7. </list>

  8. </property>

  9. </bean>

② 當屬性為 java.util.Set 的時候,

 
  1. public class Boss {

  2. private Set favorites = new ArrayList();

  3. public Set getFavorites() {

  4. return favrites;

  5. }

  6. public void setFavorites(Set favrites) {

  7. this.favrites = favorites;

  8. }

  9. }

 
  1. <bean id="boss" class="***">

  2. <property name="favorites">

  3. <set>

  4. <value>唱歌</value>

  5. <value>運動</value>

  6. <value>讀書</value>

  7. </set>

  8. </property>

  9. </bean>

③ 當屬性為 java.util.Map 的時候,

 
  1. public class Boss {

  2. private Map favorites;

  3. public Map getFavorites() {

  4. return favrites;

  5. }

  6. public void setFavorites(Map favrites) {

  7. this.favrites = favorites;

  8. }

  9. }

 
  1. <bean id="boss" class="***">

  2. <property name="favorites">

  3. <map>

  4. <entry>

  5. <key><value>key01</value></key>

  6. <value>唱歌</value>

  7. </entry>

  8. <entry>

  9. <key><value>key02</value></key>

  10. <value>運動</value>

  11. </entry>

  12. <entry>

  13. <key><ref bean="keyBean" /></key>

  14. <ref bean="valueBean" />

  15. </entry>

  16. </map>

  17. </property>

  18. </bean>

④ 當屬性為 java.util.Properties 的時候,可以看做是屬性為 Map 的一個特例,Properties 屬性的鍵值只能是字串,

 
  1. public class Boss {

  2. private Properties favorites;

  3. public Properties getFavorites() {

  4. return favrites;

  5. }

  6. public void setFavorites(Properties favrites) {

  7. this.favrites = favorites;

  8. }

  9. }

 
  1. <bean id="boss" class="***">

  2. <property name="favorites">

  3. <props>

  4. <prop key="p01">唱歌</prop>

  5. <prop key="p02">運動</prop>

  6. <prop key="p03">讀書</prop>

  7. </props>

  8. </properties>

  9. </property>

  10. </bean>

⑤ 強型別結合:根據 JDK5.0 提供的強型別集合功能,在配置檔案中,允許為集合元素指定型別:

 
  1. public class Boss {

  2. private Map<Integer, String> favorites;

  3. public Map getFavorites() {

  4. return favrites;

  5. }

  6. public void setFavorites(Map favrites) {

  7. this.favrites = favorites;

  8. }

  9. }

 
  1. <bean id="boss" class="***">

  2. <property name="favorites">

  3. <map>

  4. <entry>

  5. <key><value>101</value></key>

  6. <value>唱歌</value>

  7. </entry>

  8. </map>

  9. </property>

  10. </bean>

⑥集合合併:配置檔案中的集合合併的功能,允許子 <bean> 整合父 <bean> 的同名屬性集合元素,並將子 <bean> 中配置的集合屬性值和父 <bean> 中配置的同名屬性值合併,作為最終 <bean> 的屬性值,

 
  1. <bean id="parentBoss" abstract="true" class="***">

  2. <property name="favorites">

  3. <set>

  4. <value>唱歌</value>

  5. <value>運動</value>

  6. <value>讀書</value>

  7. </set>

  8. </property>

  9. </bean>

  10.  
  11. <bean id="childBoss" parent="parentBoss">

  12. <property name="favorites">

  13. <set merge="true">

  14. <value>旅遊</value>

  15. <value>睡覺</value>

  16. </set>

  17. </property>

  18.  

--------------------- 作者:Hin_CSDN 來源:CSDN 原文:https://blog.csdn.net/qq_21396469/article/details/63684769?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!

(7)簡化配置方式:Spring 為字面值、引用 Bean 和集合都提供了相對簡化的配置方式。
(8)自動裝配:就是不再使用 ref 進行手工裝配 Bean,這種方式可以減少配置檔案的程式碼量,但是在大型專案中,不推薦使用,容易混亂。
①autowire="byName"
②autowire="byType"
③autowire="constructor"
④autowire="autodetect"
<beans> 元素標籤中的 default-autowire 屬性可以配置全域性自動裝配,其屬性的預設值為 no,標誌不啟用自動裝配;在 <beans> 中定義的自動裝配策略可以被 <bean> 的自動裝配策略覆蓋。

---------------------
作者:Hin_CSDN 
來源:CSDN 
原文:https://blog.csdn.net/qq_21396469/article/details/63684769?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!