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 ========测试方法结束=======
本节内容基于配置,说明可参考配置文件说明。