Spring重温(三)— — bean的属性注入

前言:

        前面两篇文件已经大致介绍了入门程序和值注入,对象注入。在本篇文章中,将会有更多类型的bean属性注入!比如:list,set,Map等集合属性的注入。并介绍名称空间等小知识。


接下来我们直接进入主题:
        list集合篇:

        我们开始改一下实体类,添加一个List集合属性

package com.wen.vo;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.wen.test.Curriculum;

/**
 * 实体类,实体有名字和年龄
 * @author wen
 *
 */
public class Student {

	private String name;
	private int age;
	private Curriculum curriculum;	
	//位了下面方便各种类型,直接使用Object
	private List<Object> list;
	
	public List<Object> getList() {
		return list;
	}

	public void setList(List<Object> list) {
		this.list = list;
	}

	public Curriculum getCurriculum() {
		return curriculum;
	}

	public void setCurriculum(Curriculum curriculum) {
		this.curriculum = curriculum;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

          添加后,我们一起来看配置文件:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
				http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
				http://www.springframework.org/schema/context 
				http://www.springframework.org/schema/context/spring-context-3.2.xsd 
				http://www.springframework.org/schema/aop 
			http://www.springframework.org/schema/aop/spring-aop.xsd ">
			
	<bean id="curriculum" class="com.wen.test.Curriculum">
		<property name="curriculumName" value="Spring入门"></property>
		<property name="curriculumId" value="1001" ></property>
	</bean>		
			
	<bean id="student" class="com.wen.vo.Student">
		<property name="name" value="wen"></property>
		<property name="age" value="20" ></property>
		<property name="curriculum" ref="curriculum"></property>
		<property name="list">
		<!-- list集合中放各种类型 -->
			<list>
				<!-- 放普通值类型 -->
				<value>wen</value>
				<!-- 放对象类型 -->
				<ref bean="curriculum"/>	
				
				<!-- 还可以放 map set等等类型。有兴趣的同学可以一一尝试 -->
						
			</list>	
		</property>

	</bean>

</beans>

        上面代码仅做思路启发,日过想尝试更多类型的同学可以自行去尝试。上面的<list>标签内,我们放了一个普通的list的值,接下来我们又放了一个对象(集合中可以放各种类型的数据,但是数组只能放一种类型的数据!理论上是这么说的,但是在开发中集合一般也是只想一种类型,除非很特殊吧),当然对象名字在上面已经标红,方便大家学习理解。

        一个例子一个测试一遍吧。看看程序是否有问题。

package com.wen.test;

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

import com.wen.vo.Student;

public class SpringTest {
	

	public static void  main(String[] args) {
		
		ApplicationContext applicationContext= new ClassPathXmlApplicationContext("applicationContext-test.xml");
		Student student=(Student) applicationContext.getBean("student");
      //        System.out.println("年龄"+student.getAge()+"    "+"成绩"+student.getName());
      //        System.out.println("课程信息"+student.getCurriculum());
		for(int i=0;i<student.getList().size();i++){
		System.out.println(student.getList().get(i));
		}
		
	}

}

        测试结果:



   set集合篇:

        在实体类中在加一个变量并提供getter,setter方法。因为

        private Set<Object> set;
	
	public Set<Object> getSet() {
		return set;
	}

	public void setSet(Set<Object> set) {
		this.set = set;
	}

        xml文件中添加:

        <property name="set">
		<set>
			<!-- 放普通值类型 -->
			<value>wen</value>
			<!-- 放对象类型 -->
			<ref bean="curriculum"/>		
		</set>	
	</property>

        和list集合基本相似,所以不做太多介绍,测试结果也是一样的,就不展示了。



  map集合篇:

        老规矩:

        private Map<Object, Object> map;
	public Map<Object, Object> getMap() {
		return map;
	}

	public void setMap(Map<Object, Object> map) {
		this.map = map;
	}
        配置文件中加入如下:
		<property name="map">
			<map>
				<entry key="wen" value="test"></entry>
				<entry key="test" value-ref="curriculum"></entry>
			</map>
		
		</property>

       测试结果:          


        

  总结:

        写到这里基本就完成了今天的文章了。上述只是简单的示例应用,有兴趣的同学可以将它变得更加复杂。让自己更加深刻的理解。如果文章有有错误或者是其他不足之处,欢迎给为同学,大神批评指正。小编会第一时间调整博文。

        最后,谢谢大家!


        程序人生,与君共勉


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值