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 的時候,
-
public class Boss {
-
private List favorites = new ArrayList();
-
public List getFavorites() {
-
return favrites;
-
}
-
public void setFavorites(List favrites) {
-
this.favrites = favorites;
-
}
-
}
-
<bean id="boss" class="***">
-
<property name="favorites">
-
<list>
-
<value>唱歌</value>
-
<value>運動</value>
-
<value>讀書</value>
-
</list>
-
</property>
-
</bean>
② 當屬性為 java.util.Set 的時候,
-
public class Boss {
-
private Set favorites = new ArrayList();
-
public Set getFavorites() {
-
return favrites;
-
}
-
public void setFavorites(Set favrites) {
-
this.favrites = favorites;
-
}
-
}
-
<bean id="boss" class="***">
-
<property name="favorites">
-
<set>
-
<value>唱歌</value>
-
<value>運動</value>
-
<value>讀書</value>
-
</set>
-
</property>
-
</bean>
③ 當屬性為 java.util.Map 的時候,
-
public class Boss {
-
private Map favorites;
-
public Map getFavorites() {
-
return favrites;
-
}
-
public void setFavorites(Map favrites) {
-
this.favrites = favorites;
-
}
-
}
-
<bean id="boss" class="***">
-
<property name="favorites">
-
<map>
-
<entry>
-
<key><value>key01</value></key>
-
<value>唱歌</value>
-
</entry>
-
<entry>
-
<key><value>key02</value></key>
-
<value>運動</value>
-
</entry>
-
<entry>
-
<key><ref bean="keyBean" /></key>
-
<ref bean="valueBean" />
-
</entry>
-
</map>
-
</property>
-
</bean>
④ 當屬性為 java.util.Properties 的時候,可以看做是屬性為 Map 的一個特例,Properties 屬性的鍵值只能是字串,
-
public class Boss {
-
private Properties favorites;
-
public Properties getFavorites() {
-
return favrites;
-
}
-
public void setFavorites(Properties favrites) {
-
this.favrites = favorites;
-
}
-
}
-
<bean id="boss" class="***">
-
<property name="favorites">
-
<props>
-
<prop key="p01">唱歌</prop>
-
<prop key="p02">運動</prop>
-
<prop key="p03">讀書</prop>
-
</props>
-
</properties>
-
</property>
-
</bean>
⑤ 強型別結合:根據 JDK5.0 提供的強型別集合功能,在配置檔案中,允許為集合元素指定型別:
-
public class Boss {
-
private Map<Integer, String> favorites;
-
public Map getFavorites() {
-
return favrites;
-
}
-
public void setFavorites(Map favrites) {
-
this.favrites = favorites;
-
}
-
}
-
<bean id="boss" class="***">
-
<property name="favorites">
-
<map>
-
<entry>
-
<key><value>101</value></key>
-
<value>唱歌</value>
-
</entry>
-
</map>
-
</property>
-
</bean>
⑥集合合併:配置檔案中的集合合併的功能,允許子 <bean> 整合父 <bean> 的同名屬性集合元素,並將子 <bean> 中配置的集合屬性值和父 <bean> 中配置的同名屬性值合併,作為最終 <bean> 的屬性值,
-
<bean id="parentBoss" abstract="true" class="***">
-
<property name="favorites">
-
<set>
-
<value>唱歌</value>
-
<value>運動</value>
-
<value>讀書</value>
-
</set>
-
</property>
-
</bean>
-
<bean id="childBoss" parent="parentBoss">
-
<property name="favorites">
-
<set merge="true">
-
<value>旅遊</value>
-
<value>睡覺</value>
-
</set>
-
</property>
--------------------- 作者: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
版權宣告:本文為博主原創文章,轉載請附上博文連結!