Spring(五):集合装配

本文介绍如何使用Spring框架进行集合类型的依赖注入,包括Set、List和Map等数据结构,并通过一个具体的例子展示了配置方法及测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先贴一段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>


接下来,我们在UserDAOImpl类里面声明这几个集合变量并提供get、set方法,并重写toString()方法,用于验证集合装配是否成功:

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属性,说明集合装配测试成功:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值