06--Spring注入集合屬性
阿新 • • 發佈:2018-12-12
Spring的依賴注入方式大體上可以分為三種:
- 建構函式注入
- Setter方法注入
- 方法注入 (lookup-method注入和replace-method注入)
建構函式注入可參考 04–Spring例項化Bean的三種方式 ,本篇介紹通過Setter方法注入集合屬性。下一篇介紹方法注入。
- bean
package com.lyc.cn.v2.day01.collection; import org.springframework.util.CollectionUtils; import java.util.*; /** * 集合屬性注入 * @author: LiYanChao * @create: 2018-09-29 15:46 */ public class Cat { /** 注入List集合 **/ private List<String> listNames; /***注入Set集合*/ private Set<String> setNames; /** 注入Properties **/ private Properties propertiesNames; /** 注入Map集合 **/ private Map<String, String> mapNames; /** 注入陣列 **/ private String[] arrayNames; /** * 列印陣列集合 */ public void sayArrayNames() { System.out.println("注入陣列-->"); if (arrayNames != null && arrayNames.length > 0) { for (int i = 0; i < arrayNames.length; i++) { System.out.println(arrayNames[i]); } } System.out.println(); } /** * 列印Map集合 */ public void sayMapNames() { if (null != mapNames && mapNames.size() > 0) { System.out.println("注入Map集合-->"); for (Map.Entry<String, String> entry : mapNames.entrySet()) { System.out.println("key= " + entry.getKey() + " value= " + entry.getValue()); } System.out.println(); } } /** * 列印Properties屬性 */ public void sayPropertiesNames() { if (null != propertiesNames) { System.out.println("注入properties屬性-->"); System.out.println(propertiesNames.get("name")); System.out.println(propertiesNames.get("age")); System.out.println(); } } /** * 列印List集合 */ public void sayListNames() { if (!CollectionUtils.isEmpty(listNames)) { System.out.println("注入List集合-->"); for (String string : listNames) { System.out.println(string); } System.out.println(); } } /** * 列印Set集合 */ public void saySetNames() { if (!CollectionUtils.isEmpty(setNames)) { System.out.println("注入Set集合-->"); Iterator<String> iterator = setNames.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println(); } } public List<String> getListNames() { return listNames; } public void setListNames(List<String> listNames) { this.listNames = listNames; } public Set<String> getSetNames() { return setNames; } public void setSetNames(Set<String> setNames) { this.setNames = setNames; } public Properties getPropertiesNames() { return propertiesNames; } public void setPropertiesNames(Properties propertiesNames) { this.propertiesNames = propertiesNames; } public Map<String, String> getMapNames() { return mapNames; } public void setMapNames(Map<String, String> mapNames) { this.mapNames = mapNames; } public String[] getArrayNames() { return arrayNames; } public void setArrayNames(String[] arrayNames) { this.arrayNames = arrayNames; } }
- xml
<!--集合屬性注入--> <bean id="cat" class="com.lyc.cn.v2.day01.collection.Cat"> <!--注入List集合--> <property name="listNames"> <!-- merge 父子bean是否合併條目 --> <list value-type="java.lang.String" merge="false"> <value>張三</value> <value>李四</value> <value>王五</value> </list> </property> <!--注入Set集合--> <property name="setNames"> <set value-type="java.lang.String" merge="true"> <value>張三</value> <value>李四</value> <value>王五</value> </set> </property> <!--注入Map集合--> <property name="mapNames"> <map key-type="java.lang.String" value-type="java.lang.String"> <entry key="name" value="小明"/> <entry key="age" value="3"/> </map> </property> <!--注入陣列--> <property name="arrayNames"> <array value-type="java.lang.String"> <value>張三</value> <value>李四</value> <value>王五</value> </array> </property> <!--注入Properties--> <property name="propertiesNames"> <props value-type="java.lang.String"> <prop key="name">小明</prop> <prop key="age">3</prop> </props> </property> </bean>
- 測試
@Test
public void test7() {
// 注入集合屬性
Cat cat = xmlBeanFactory.getBean("cat", Cat.class);
cat.sayListNames();
cat.saySetNames();
cat.sayArrayNames();
cat.sayMapNames();
cat.sayPropertiesNames();
}
- 結果
========測試方法開始======= 注入List集合--> 張三 李四 王五 注入Set集合--> 張三 李四 王五 注入陣列--> 張三 李四 王五 注入Map集合--> key= name value= 小明 key= age value= 3 注入properties屬性--> 小明 3 ========測試方法結束=======
本節內容基於配置,說明可參考配置檔案說明。