六、Spring依赖注入之数组,集合(List,Set,Map),Properties的注入

数组和List的注入

如果是数组或者List集合,注入配置文件的方式是一样的

测试类:

package blog.csdn.net.mchenys.domain;

import java.util.Arrays;
import java.util.List;

public class User {
	
	private String [] nameArr;
	
	private List<String> nameList;

	//提供set方法注入
	public void setNameArr(String[] nameArr) {
		this.nameArr = nameArr;
	}

	public void setNameList(List<String> nameList) {
		this.nameList = nameList;
	}

	@Override
	public String toString() {
		return "User [nameArr=" + Arrays.toString(nameArr) + ", nameList=" + nameList + "]";
	}
	
	
}

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">

	
	<!-- 注册User类 -->
	<bean id="user" class="blog.csdn.net.mchenys.domain.User">
		<!-- 注入数组属性 -->
		<property name="nameArr">
			<!-- 数组中的值 -->
			<list>
				<value>哈哈</value>
				<value>呵呵</value>
				<value>嘿嘿</value>
			</list>
		</property>
		
		<!-- 注入list集合属性 -->
		<property name="nameList">
			<!-- 集合中的值 -->
			<list>
				<value>哈哈1</value>
				<value>呵呵2</value>
				<value>嘿嘿3</value>
			</list>
		</property>
	</bean>
</beans>

测试类

package blog.csdn.net.mchenys.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import blog.csdn.net.mchenys.domain.User;

public class Demo3 {

	@Test
	public void test1() {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		User user = ctx.getBean(User.class);
		System.out.println(user);
	}
}

执行结果
在这里插入图片描述

由于数组和集合不单单只存储基本数据类型,还可以存储引用类型数据,下面也介绍一下
还是以User类作为测试,添加一个List集合属性,存储对象是Car类型

User.java加入2行代码

//...
private List<Car> carList; 

public void setCarList(List<Car> carList) {
	this.carList = carList;
}
//...

Car.java

package blog.csdn.net.mchenys.domain;

public class Car {
	private String name;
	private double money;

	public Car(String name, double money) {
		this.name = name;
		this.money = money;
	}

	@Override
	public String toString() {
		return "Car [name=" + name + ", money=" + money + "]";
	}
}

xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- 注册Car类 -->
	<bean id="car" class="blog.csdn.net.mchenys.domain.Car">
		<constructor-arg name="name" value="儿童玩具车" />
		<constructor-arg name="money" value="1000" />
	</bean>
	
	<!-- 注册User类 -->
	<bean id="user" class="blog.csdn.net.mchenys.domain.User">
		<!-- 注入数组属性 -->
		<property name="nameArr">
			<!-- 数组中的值 -->
			<list>
				<value>哈哈</value>
				<value>呵呵</value>
				<value>嘿嘿</value>
			</list>
		</property>
		
		<!-- 注入list集合属性 -->
		<property name="nameList">
			<!-- 集合中的值 -->
			<list>
				<value>哈哈1</value>
				<value>呵呵2</value>
				<value>嘿嘿3</value>
			</list>
		</property>
		
		<!-- 注入list集合属性 -->
		<property name="carList">
			<!-- 集合中的值是Car类型,引用类型要采用ref标签,通过bean属性指定Car类型的id进行关联 -->
			<list>
				<ref bean="car" />
				<ref bean="car" />
				<ref bean="car" />
			</list>
		</property>
	</bean>
</beans>

测试

package blog.csdn.net.mchenys.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import blog.csdn.net.mchenys.domain.User;

public class Demo3 {

	@Test
	public void test1() {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		User user = ctx.getBean(User.class);
		System.out.println(user);
	}
}

执行结果
在这里插入图片描述

Set集合的注入

还是以User类为例,加入2行代码

//...
private Set<String> nameSet;
	
public void setNameSet(Set<String> nameSet) {
	this.nameSet = nameSet;
}
//...

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- 注册Car类 -->
	<bean id="car" class="blog.csdn.net.mchenys.domain.Car">
		<constructor-arg name="name" value="儿童玩具车" />
		<constructor-arg name="money" value="1000" />
	</bean>
	
	<!-- 注册User类 -->
	<bean id="user" class="blog.csdn.net.mchenys.domain.User">
		<!-- 注入set集合属性 -->
		<property name="nameSet">
			<!-- 和list标签类似,只是名称改成了set -->
			<set>
				<value>哈哈</value>
				<value>呵呵</value>
				<value>嘿嘿</value>
			</set>
		</property>
	</bean>
</beans>

测试类还是上面那个,直接看测试结果吧
在这里插入图片描述

Map集合的注入

还是以User类为例,加入以下代码

//...
private Map<String,String> nameMap;
	
public void setNameMap(Map<String, String> nameMap) {
	this.nameMap = nameMap;
}
//...

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- 注册User类 -->
	<bean id="user" class="blog.csdn.net.mchenys.domain.User">
		<!-- 注入map集合属性 -->
		<property name="nameMap">
			<map>
				<entry key="name1" value="张三"/>
				<entry key="name2" value="李四"/>
				<entry key="name3" value="王五"/>
				<!-- 注意:
					如果map集合的key或者value是引用类型数据的话,就要使用对应的 key-ref 和 value-ref属性
					对应的属性值任然是填写配置文件中注册的id
				 -->
			</map>
		</property>
	</bean>
</beans>

测试类代码不变,执行结果如下:
在这里插入图片描述

properties属性文件的注入

还是以User类为例,加入以下代码

//...
private Properties nameProp;//注意是java.util的Properties
	
public void setNameProp(Properties nameProp) {
	this.nameProp = nameProp;
}
//...

配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- 注册User类 -->
	<bean id="user" class="blog.csdn.net.mchenys.domain.User">
		<!-- 注册property属性-->
		<property name="nameProp">
			<props>
				<prop key="name">胜哥</prop>
				<prop key="age">27</prop>
			</props>
		</property>
	</bean>
</beans>

测试代码不变,执行结果如下:
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值