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