1. 程式人生 > >JavaWeb 筆記之 Spring 集合屬性以及 P 名稱空間

JavaWeb 筆記之 Spring 集合屬性以及 P 名稱空間

集合屬性

  • 在 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>