先贴一段beans.xml的代码,我们的目标就是将id="userDAO"的bean类里面的sets、lists、maps集合通过Spring的集合装配功能把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">
<bean id="userDAO" class="com.castiel.dao.impl.UserDAOImpl">
<property name="sets">
<set>
<value>1</value>
<value>2</value>
</set>
</property>
<property name="lists">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
<property name="maps">
<map>
<entry key="1" value="1"></entry>
<entry key="2" value="2"></entry>
<entry key="3" value="3"></entry>
</map>
</property>
</bean>
<!-- scope 取值:singleton(默认值);prototype;request;session;global session; -->
<!-- singleton(单例):无论取多少次这个对象,获得的都是同一对象 -->
<!-- prototype(原型):每次取对象都是按照原型重新new一个:例如Action一般使用这个配置 -->
<bean id="userService" class="com.castiel.service.UserService" scope="singleton">
<!-- setter注入 -->
<property name="userDAO" ref="userDAO" />
</bean>
</beans>
package com.castiel.dao.impl;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.castiel.dao.UserDAO;
import com.castiel.model.User;
public class UserDAOImpl implements UserDAO {
private Set<String> sets;
private List<String> lists;
private Map<String,String> maps;
public Set<String> getSets() {
return sets;
}
public void setSets(Set<String> sets) {
this.sets = sets;
}
public List<String> getLists() {
return lists;
}
public void setLists(List<String> lists) {
this.lists = lists;
}
public Map<String, String> getMaps() {
return maps;
}
public void setMaps(Map<String, String> maps) {
this.maps = maps;
}
@Override
public void save(User u) {
// TODO Auto-generated method stub
System.out.println("开始存储数据!");
System.out.println("存储User...");
//这里编写持久化到数据库的代码,如JDBC,或使用hibernate,ibatis等框架
System.out.println("用户持久化到数据库完成!");
}
@Override
public String toString(){
return "sets size:"+sets.size()+" | lists size:"+lists.size()+" | maps size:"+maps.size();
}
}
下一步,我们编写一个测试类,测试一下集合装配功能是否正常:
package com.castiel.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.castiel.dao.UserDAO;
import com.castiel.model.User;
import com.castiel.service.UserService;
public class UserServiceTest {
/**测试类生成方式**/
/**
* 1.选中src下com.castiel.service包中的UserService
* 2.右键new jUnit Test Case
* 3.点击NEXT
* 4.选择需要测试的方法
* 5.点击Finish
* 6.把生成出来的*Test.java文件拖到test下com.castiel.service包中
* @throws Exception
*/
@Test
public void testAdd() throws Exception {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
/**
* 测试集合装配
*/
System.out.println("测试集合注入开始...");
UserDAO userDAO = (UserDAO)applicationContext.getBean("userDAO");
System.out.println(userDAO.toString());
}
}
运行结果如图所示,已经成功读取到集合的size属性,说明集合装配测试成功: