数组和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>
测试代码不变,执行结果如下: