如何使用Spring框架调用构造方法

  • 根据Spring框架中构造方法中参数类型的不同,调用的方法也不同。
  • 概要:通过constructor-arg标签设置构造方法参数值
  • 前提:搭建环境
  1. 构建Spring框架,引如下六个包:

commons-logging-1.2.jar
spring-beans-4.3.10.RELEASE.jar
spring-context-4.3.10.RELEASE.jar
spring-core-4.3.10.RELEASE.jar
spring-expression-4.3.10.RELEASE.jar

  1. 创建一个application.xml,再创建一个普通类和测试类Test

基本数据类型或String类型


总结:如果参数类型为基本参数类型或String类型,则直接使用value标签属性赋值


public class Students {

	private int age;
	private String name;
	
	public Students(int age, String name) {
		this.age = age;
		this.name = name;
		//局部范围内的局部变量名(与全局变量名相同的)覆盖全局变量,通过this调用全局变量
		System.out.println("基本数据类型");
	}

	@Override
	public String toString() {
		return "age=" + age + ", name=" + name;
	}
}
public class Test {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");//创建容器并创建类将其加到此容器中
		Students student = applicationContext.getBean(Students.class);//加载类并创建对象获取信息
		System.out.println(student);
	}
}
	<bean class="com.jd.vo.Students">
		<constructor-arg name="name" value="Jhon"></constructor-arg>
		<constructor-arg name="age" value="18"></constructor-arg>
	</bean>

输出结果:
基本数据类型
age=18, name=Jhon


引用数据类型


总结:如果参数类型是引用数据类型,则用ref标签属性指定对象


import java.util.Date;

public class Students {

	private Date birthday;

	public Students(Date birthday) {
		this.birthday = birthday;
		System.out.println("引用数据类型");
	}
}
public class Test {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
		System.out.println(applicationContext.getBean("date"));
	}
}
		<bean id="date" class="java.util.Date"/>
	 	<bean class="com.jd.vo.Students">
	 		<constructor-arg name="birthday" ref="date"></constructor-arg>
		</bean>

输出结果:
引用数据类型
Thu May 09 23:09:23 CST 2019


数组类型


总结:如果参数类型是数组类型,则用子标签array中的value标签属性设定值


public class Students {

	private int [] scores;

	public Students(int [] scores) {
		this.scores = scores;
		for (int score : scores) {
			System.out.println(score);
		}
		System.out.println("数组类型");
	}
}
public class Test {

	public static void main(String[] args) {
	
		new ClassPathXmlApplicationContext("application.xml");
	   //加载容器后,里面的class="com.jd.vo.Students",相当于创建并加载类,并调用构造方法——>创建对象
		//创建对象时都是调用构造方法来创建的
}
	 <bean class="com.jd.vo.Students">
	 	<constructor-arg name="scores">
	 		<array>
	 			<value>99</value>
	 			<value>100</value>
	 		</array>
	 	</constructor-arg>
	 </bean>

输出结果:
99
100
数组类型


List集合


总结:如果参数类型是List集合,则用list标签里的value标签赋值


import java.util.List;

public class Students {

	private List<String> names;

	public Students(List<String> names) {
		this.names = names;
		for (String name : names) {
			System.out.println(name);
		}
		System.out.println("List集合");
	}
}
public class Test {

	public static void main(String[] args) {
	
		new ClassPathXmlApplicationContext("application.xml");
		//加载容器后,里面的class="com.jd.vo.Students",相当于创建并加载类,并调用构造方法——>创建对象
		//创建对象时都是调用构造方法来创建的
}
	<bean class="com.jd.vo.Students">
	 	<constructor-arg name="names">
	 		<list>
	 			<value>Tom</value>
	 			<value>Jerry</value>
	 		</list>
	 	</constructor-arg>
	 </bean>

输出结果:
Tom
Jerry
List集合


Set集合


总结: 如果参数类型是Set集合,则用set标签里的value标签赋值


import java.util.Set;

public class Students {

	private Set<String> ids;

	public Students(Set<String> ids) {
		this.ids = ids;
		for (String id : ids) {
			System.out.println(id);
		}
		System.out.println("Set集合");
	}
}
public class Test {

	public static void main(String[] args) {
	
		new ClassPathXmlApplicationContext("application.xml");
}
	<bean class="com.jd.vo.Students">
	 	<constructor-arg name="ids">
	 		<set>
	 			<value>123456789</value>
	 			<value>987654321</value>
	 		</set>
	 	</constructor-arg>
	 </bean>

输出结果:
123456789
987654321
Set集合


总结:
如果数组、List、Set集合中的参数类型是基本数据类型或String类型,则使用value标签,
否则使用bean子标签或ref子标签其中一个

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

public class Students {

	private List<Date> dates;

	public Students(List<Date> dates) {
		this.dates = dates;
		for (Date date : dates) {
			System.out.println(date);
		}
	}
}
public class Test {

	public static void main(String[] args) {
	
		new ClassPathXmlApplicationContext("application.xml");
}
<!--bean id="date" class="java.util.Date"/-->
 <bean class="com.jd.vo.Students">
	 	<constructor-arg name="dates">
		 	<list>
		 		<bean class="java.util.Date"/>
		 		<!-- ref bean="date"/-->
		 	</list>
	 	</constructor-arg>
	 </bean>

输出结果:
Fri May 10 23:27:53 CST 2019


Map集合


总结:

  • 如果参数类型是Map集合,则用Map标签赋值,元素使用entry
  • 如果Map 集合中key或value是基本数据类型或者String类型,则使用key或value标签属性,否则使用key-ref或value-ref

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

public class Students {

	private Map<String,Date> birthdaies;

	public Students(Map<String, Date> birthdaies) {
		this.birthdaies = birthdaies;
		Set<String> keys = birthdaies.keySet();//key是String类型,value是Date类型
		for (String key : keys) {
			Date birthday = birthdaies.get(key);
			System.out.println(birthday);
		}
		System.out.println("Map集合");
	}
}
public class Test {

	public static void main(String[] args) {
	
		new ClassPathXmlApplicationContext("application.xml");
}
  <bean id="date" class="java.util.Date"/>
  <bean class="com.jd.vo.Students">
	 	<constructor-arg name="birthdaies">
	 		<map>
	 			<entry key="爸爸" value-ref="date"></entry>
	 			<entry key="妈妈" value-ref="date"></entry>
	 		</map>
	 	</constructor-arg>
	 </bean>

输出结果:
Fri May 10 23:12:36 CST 2019
Fri May 10 23:12:36 CST 2019
Map集合


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值