JavaWeb 筆記之 Spring 集合屬性以及 P 名稱空間
阿新 • • 發佈:2018-12-14
集合屬性
在 Spring中可以通過一組內建的 xml 標籤(例如: <list>, <set> 或 <map>) 來配置集合屬性.
配置 java.util.List 型別的屬性, 需要指定 <list> 標籤, 在標籤裡包含一些元素. 這些標籤可以通過 <value> 指定簡單的常量值, 通過 <ref> 指定對其他 Bean 的引用. 通過<bean> 指定內建 Bean 定義. 通過 <null/> 指定空元素. 甚至可以內嵌其他集合
陣列的定義和 List 一樣, 都使用 <list>
配置 java.util.Set 需要使用 <set> 標籤, 定義元素的方法與 List 一樣.
Java.util.Map 通過 <map> 標籤定義, <map> 標籤裡可以使用多個 <entry> 作為子標籤. 每個條目包含一個鍵和一個值.
必須在 <key> 標籤裡定義鍵
因為鍵和值的型別沒有限制, 所以可以自由地為它們指定 <value>, <ref>, <bean> 或 <null> 元素.
可以將 Map 的鍵和值作為 <entry> 的屬性定義: 簡單常量使用 key 和 value 來定義; Bean 引用通過 key-ref 和 value-ref 屬性定義
使用 <props> 定義 java.util.Properties, 該標籤使用多個 <prop> 作為子標籤. 每個 <prop> 標籤必須定義 key 屬性.
example:
<bean id="car" class="com.axon.spring5.Car"> <constructor-arg value="KUGA" index="1"></constructor-arg> <constructor-arg value="ChangAnFord" index="0"></constructor-arg> <constructor-arg value="250000" type="float"></constructor-arg> </bean> <bean id="car2" class="com.axon.spring5.Car"> <constructor-arg value="ChangAnMazda"></constructor-arg> <!-- 若字面值中包含特殊字元, 則可以使用 DCDATA 來進行賦值. (瞭解) --> <constructor-arg> <value><![CDATA[<ATARZA>]]></value> </constructor-arg> <constructor-arg value="180" type="int"></constructor-arg> </bean> <bean id="user" class="com.axon.spring5.User"> <property name="userName"><value>Jack</value></property> <property name="cars"> <!-- 使用 list元素來裝配集合屬性 --> <list> <ref bean="car"/> <ref bean ="car2"/> </list> </property> </bean>
或
<!-- 宣告集合型別的 bean --> <util:list id="cars"> <ref bean="car"/> <ref bean="car2"/> </util:list> <bean id="user2" class="com.axon.spring5.User"> <property name="userName" value="Rose"></property> <!-- 引用外部宣告的 list --> <property name="cars" ref="cars"></property> </bean>
P 名稱空間
- 為了簡化 XML 檔案的配置,越來越多的 XML 檔案採用屬性而非子元素配置資訊。
- Spring 從 2.5 版本開始引入了一個新的 p 名稱空間,可以通過 <bean> 元素屬性的方式配置 Bean 的屬性。
- 使用 p 名稱空間後,基於 XML 的配置方式將進一步簡化
<bean id="user3" class="com.axon.spring5.User" p:cars-ref="cars" p:userName="Titannic"> </bean>