1. 程式人生 > >06--Spring注入集合屬性

06--Spring注入集合屬性

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


========測試方法結束=======

本節內容基於配置,說明可參考配置檔案說明。