SpringMVC配置构造方法

SpringMVC框架是如何配置类的构造方法的呢,来探究一下?

(感觉比较长的可以直接拉到最后看总结)

  1. 基本类型
  2. string
  3. 引用类型
  4. list集合
    • 基本类型或string
    • 引用类型
  5. 数组集合
    • 基本类型或string
    • 引用类型
  6. set集合
    • 基本类型或string
    • 引用类型
  7. map集合
    • 基本类型或string
    • 引用类型
  8. 总结

首先,做好前期的准备工作,新建java项目,引入相关的包,
配置springMVC文件:(application.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 class="vo.Student">		<!-- 研究类 -->	
	</bean>

</beans>

新建一个Student类作为研究对象:

package vo;
public class Student {
	public Student() {		
		System.out.println("无参构造方法");	
	}	
}

新建一个Test类来观察结果:

package Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import vo.Student;
public class Test {
	public static void main(String[] args) {	
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");	
		Student student = applicationContext.getBean(Student.class);	
	}		
}

这是无参构造方法的配置,输出结果:

无参构造方法

接下来开始不同情况下的配置情况:


1. 基本类型

Student类:

package vo;	 	
public class Student {
	
		private int age;
		
		public Student(int age) {	
			this.age = age;
		System.out.println("基本类型: "+age);	
	}	
}

application.xml配置:

<bean class="vo.Student">
		<constructor-arg name="age">	<!-- name为变量名 -->
			<value>12</value>		<!-- value为变量值 -->
		</constructor-arg>
</bean>

输出结果:

基本类型: 12

2. String类型

Student类:

package vo;
public class Student {

	private String name;
	
	public Student(String name) {	
		this.name = name;
	System.out.println("String类型: "+name);	
	}	
}

application.xml配置:

<bean class="vo.Student">
		<constructor-arg name="name">	<!-- name为变量名 -->
			<value>Tom</value>	<!-- value为变量值 -->
		</constructor-arg>
</bean>

输出结果:

String类型: Tom

基本类型和String类型在配置时并无区别


3. 引用类型

Student类:

package vo;

import java.util.Date;

public class Student {

	private Date date;
	
	public Student(Date date) {	
		this.date = date;
	System.out.println("引用类型: "+date);	
	}	
}

application.xml配置:

<bean id="date" class="java.util.Date"></bean>	<!-- 先新建此引用类型的对象并设置id -->	
<bean class="vo.Student">
	<constructor-arg name="date" ref="date">	<!-- name为变量名 -->		
												<!-- ref为引用对象的id -->
	</constructor-arg>
</bean>

输出结果:

引用类型: Tue May 07 21:52:19 CST 2019

引用类型不太一样,需要先创建一个此引用类型的对象并设置id,相当于直接通过ref将引用对象引用过来


4. list集合

基本类型及String类型

Student类:

package vo;

import java.util.Date;
import java.util.List;

public class Student {
	
		private List<String> names;
		
		public Student(List<String> names) {	
			this.names = names;
			System.out.println("list	集合-基本类型: ");	
			for (String name : names) {
				System.out.println(name);
			}
	}	
}

application.xml配置:

<bean class="vo.Student">
	<constructor-arg name="names">	<!-- name为变量名 -->		
		<list>
			<value>mama</value>		<!-- value为list集合中的元素 -->
			<value>baba</value>
		</list>											
	</constructor-arg>
</bean>

输出结果:

s集合-基本类型及String: 
mama
baba

在list标签中的value标签存储元素

引用类型

Student类:

package vo;

import java.util.Date;
import java.util.List;

public class Student {
	
		private List<Date> dates;
		
		public Student(List<Date> dates) {	
			this.dates = dates;
			System.out.println("list集合-引用类型: ");	
			for (Date date : dates) {
				System.out.println(date);
			}
	}	
}

application.xml配置:

<bean id="date" class="java.util.Date"></bean>	<!-- 先新建此引用类型的对象并设置id -->	
<bean class="vo.Student">
	<constructor-arg name="dates">	<!-- name为变量名 -->		
		<list>
			<bean class="java.util.Date"></bean>	<!-- 新建一个引用类型变量,类似局部变量 -->
			<ref bean="date"/>		<!-- 引用创建好的引用类型变量 -->
		</list>												
	</constructor-arg>
</bean>

输出结果:

list集合-引用类型: 
Tue May 07 22:10:06 CST 2019
Tue May 07 22:10:06 CST 2019

两种方式存储元素
1.在list标签新建一个引用类型对象
2.在list标签中引用一个创建好的引用类型对象


5. 数组集合

基本类型及String类型

Student类:

package vo;

import java.util.Date;
import java.util.List;

public class Student {
	
		private String[] names;
		
		public Student(String[] names) {	
			this.names = names;
			System.out.println("数组集合-基本类型: ");	
			for (String name : names) {
				System.out.println(name);
			}
	}	
}

application.xml配置:

<bean class="vo.Student">
	<constructor-arg name="names">	<!-- name为变量名 -->		
		<list>
			<value>mama</value>		<!-- value为list集合中的元素 -->
			<value>baba</value>
		</list>											
	</constructor-arg>
</bean>

输出结果:

数组集合-基本类型及String: 
mama
baba

与list集合配置方式一样

引用类型

Student类:

package vo;

import java.util.Date;
import java.util.List;

public class Student {
	
		private Date[] dates;
		
		public Student(Date[] dates) {	
			this.dates = dates;
			System.out.println("数组集合-引用类型: ");	
			for (Date date : dates) {
				System.out.println(date);
			}
	}	
}

application.xml配置:

<bean id="date" class="java.util.Date"></bean>	<!-- 先新建此引用类型的对象并设置id -->	
<bean class="vo.Student">
	<constructor-arg name="dates">	<!-- name为变量名 -->		
		<list>
			<bean class="java.util.Date"></bean>	<!-- 新建一个引用类型变量,类似局部变量 -->
			<ref bean="date"/>		<!-- 引用创建好的引用类型变量 -->
		</list>												
	</constructor-arg>
</bean>

输出结果:

数组集合-引用类型: 
Tue May 07 22:15:17 CST 2019
Tue May 07 22:15:17 CST 2019

与list集合配置方式一样


6. set集合

基本类型及String类型

Student类:

package vo;

import java.util.Date;
import java.util.List;
import java.util.Set;

public class Student {
	
		private Set<String> names;
		
		public Student(Set<String> names) {	
			this.names = names;
			System.out.println("set集合-基本类型: ");	
			for (String name : names) {
				System.out.println(name);
			}
	}	
}

application.xml配置:

<bean class="vo.Student">
	<constructor-arg name="names">	<!-- name为变量名 -->	
		<set>
			<value>baba</value>	<!-- value为set集合中的元素 -->
			<value>mama</value>		
		</set>												
	</constructor-arg>
</bean>

输出结果:

set集合-基本类型: 
mama
baba

除了list标签换成set标签与list集合配置方式一样

引用类型

Student类:

package vo;

import java.util.Date;
import java.util.List;
import java.util.Set;

public class Student {
	
		private Set<Date> dates;
		
		public Student(Set<Date> dates) {	
			this.dates = dates;
			System.out.println("set集合-引用类型: ");	
			for (Date date : dates) {
				System.out.println(date);
			}
	}	
}

application.xml配置:

<bean id="date" class="java.util.Date"></bean>	<!-- 先新建此引用类型的对象并设置id -->	
<bean class="vo.Student">
	<constructor-arg name="dates">	<!-- name为变量名 -->	
		<set>
			<ref bean="date"/>	<!-- 引用创建好的引用类型变量 -->
			<bean class="java.util.Date"></bean>	<!-- 新建一个引用类型变量,类似局部变量 -->		
		</set>												
	</constructor-arg>
</bean>

输出结果:

set集合-引用类型: 
Tue May 07 22:29:07 CST 2019
Tue May 07 22:29:07 CST 2019

除了list标签换成set标签与list集合配置方式一样


7. map集合

基本类型及String类型

Student类:

package vo;

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

public class Student {
	
		private Map<String,Integer> infos;
		
		public Student(Map<String,Integer> infos) {	
			this.infos = infos;
			System.out.println("map集合-基本类型: ");	
			Set<String> keys = infos.keySet();
			for (String key : keys) {
				System.out.println(key+":"+infos.get(key));
			}
	}	
}

application.xml配置:

<bean class="vo.Student">
	<constructor-arg name="infos">	<!-- name为变量名 -->	
		<map>	<!-- 在entry中保存键和值 -->	
			<entry key="123" value="14"></entry>	<!-- key和value分别保存键和值, -->
			<entry key="321" value="21"></entry>	
		</map>												
	</constructor-arg>
</bean>

输出结果:

map集合-基本类型: 
123:14
321:21

要在map标签中的entry标签中配置,一个代表一组键值

引用类型

Student类:

package vo;

import java.util.Date;
import java.util.Map;
import java.util.Set;

public class Student {
	
		private Map<String,Date> infos;
		
		public Student(Map<String,Date> infos) {	
			this.infos = infos;
			System.out.println("map集合-引用类型: ");	
			Set<String> keys = infos.keySet();
			for (String key : keys) {
				System.out.println(key+":"+infos.get(key));
			}
	}	
}

application.xml配置:

<bean id="date" class="java.util.Date"></bean>	<!-- 先新建此引用类型的对象并设置id -->	
<bean id="date2" class="java.util.Date"></bean>
<bean class="vo.Student">
	<constructor-arg name="infos">	<!-- name为变量名 -->	
		<map>	<!-- 在entry中保存一个键和值 -->	
			<entry key="123" value-ref="date"></entry>	<!-- key和value分别保存键和值,如果引用类型使用key-ref和value-ref -->
			<entry key="321" value-ref="date2"></entry>	<!-- 如果为引用类型,只能引用上面创建好的对象,不能单独创建 -->
		</map>												
	</constructor-arg>
</bean>

输出结果:

map集合-引用类型: 
123:Wed May 08 15:59:16 CST 2019
321:Wed May 08 15:59:16 CST 2019

在map标签中的entry配置,不同的是引用类型只能使用上面创建好的


8.总结

1.constructor-arg标签括号内的name属性的值为变量名字

<constructor-arg name="name">
</constructor-arg>

2.基本类型与string类型的创建并无区别

3.基本类型在constructor-arg标签内的value标签创建

<value>123</value>

4.引用类型在constructor-arg括号内的ref属性创建,要引用一个上面创建过的对象

<constructor-arg name="date" ref="date">
</constructor-arg>

5.数组类型与list集合类型形式一样

6.集合类型中list和set形式一样,仅list和set标签名字不一样

7.list,set集合均为在constructor-arg标签内新增list或set标签
标签内若为基本类型,与上面形式一样,创建value标签
标签内若为引用类型,有两种配置方法:

<list>
	<bean class="java.util.Date"></bean>	<!-- 新建一个引用类型变量,类似局部变量 --> <!-- 方法1 -->
	<ref bean="date"/>		<!-- 引用创建好的引用类型变量 --> <!-- 方法2 -->
</list>	

8.map集合最为特殊:
constructor-arg标签内新建map标签,在map标签内新建entry标签括号内配置
entry标签括号内需要配置两个属性:
若键为基本类型配置key属性,引用类型则配置key-ref属性
若值为基本类型配置value属性,引用类型则配置value-ref属性

<map>	<!-- 在entry中保存一个键和值 -->	
	<entry key="123" value-ref="date"></entry>	<!-- key和value分别保存键和值,如果引用类型使用key-ref和value-ref -->
	<entry key="321" value-ref="date2"></entry>	<!-- 如果为引用类型,只能引用上面创建好的对象,不能单独创建 -->
</map>	

map中若配置引用类型,只能使用上面创建好的对象引用过来一种方式,而不能单独创建对象


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值