`

构造函数注入的3种方式【非引用类型】

阅读更多

1、com.tz.model.UserBean.java

package com.tz.model;

import java.util.Date;

/**
 * 用户信息 
 * 创建人:LiPiaoShui
 * 时间:2015年12月7日-下午4:44:15
 * @version 1.0.0
 */
public class UserBean {
	
	private Integer id;
	private String username;
	private String password;
	private Integer age;
	private String address;
	private String email;
	private Date createTime;
	
	public UserBean() {
		super();
	}
	
	public UserBean(String username, String address) {
		super();
		this.username = username;
		this.address = address;
	}
	
	public UserBean(String username, Integer age) {
		super();
		this.username = username;
		this.age = age;
	}

	
	public UserBean(Integer id, String username, String password, Integer age,
			String address, String email, Date createTime) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.age = age;
		this.address = address;
		this.email = email;
		this.createTime = createTime;
	}

	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@Override
	public String toString() {
		return "UserBean [id=" + id + ", username=" + username + ", password="
				+ password + ", age=" + age + ", address=" + address
				+ ", email=" + email + ", createTime=" + createTime + "]";
	}
	
}

 

2、第1种:按参数的索引,此种方式的默认类型为java.lang.String

<bean id="user4" class="com.tz.model.UserBean">
	<constructor-arg index="0" value="keke"/>
	<constructor-arg index="1" value="30"/>
</bean>

 

3、第2种:按参数的类型

<bean id="user5" class="com.tz.model.UserBean">
	<constructor-arg type="java.lang.String" value="keke2"/>
	<constructor-arg type="java.lang.Integer" value="40"/>
</bean>

 

4、第3种:按参数的索引和类型【推荐】

<bean id="user6" class="com.tz.model.UserBean">
	<constructor-arg index="0" type="java.lang.String" value="keke3"/>
	<constructor-arg index="1" type="java.lang.String" value="50"/>
</bean>

 

5、测试代码

public void testIOC() {
	ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
	UserBean userBean4 = (UserBean) context.getBean("user4");
	UserBean userBean5 = (UserBean) context.getBean("user5");
	UserBean userBean6 = (UserBean) context.getBean("user6");
	//输出:UserBean [id=null, username=keke, password=null, age=null, address=30, email=null, createTime=null]
	System.out.println(userBean4);
	//输出:UserBean [id=null, username=keke2, password=null, age=40, address=null, email=null, createTime=null]
	System.out.println(userBean5);
	//输出:UserBean [id=null, username=keke3, password=null, age=null, address=50, email=null, createTime=null]
	System.out.println(userBean6);
}

 

 

分享到:
评论

相关推荐

    spring框架技术+第2天+xmind思维导图

    构造函数注入 index:可省略,参数下标,默认从0开始 name :可省略,构造函数参数列表中的参数名称 public UserService(IUserDao dao) { this.dao = dao; } ref :表示引用对象的引用地址,即容器中的...

    micro-di:node.js 的基于配置的依赖注入容器,灵感来自 Symfony2 和 Spring

    微型DI ...@inject - 构造函数注入类型:对象、参数、道具 @tags - 标签数组,请参阅 用法 # ./config/ex2.all.yml app : console-transport : @class: ~App.Transport.Console @tags: [req] pr

    Aglyph:Aglyph是用于Python的依赖注入框架。-开源

    Aglyph是用于Python的依赖注入框架,支持类型2(setter)和类型3(构造函数)注入。 Aglyph可在CPython(http://www.python.org/)2.7和3.4+以及最新版本的PyPy(http://pypy.org/&gt;)、Jython(http://www.jython)...

    Spring3.x企业应用开发实战(完整版) part1

    4.3.2 构造函数注入 4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 ...

    Spring.3.x企业应用开发实战(完整版).part2

    4.3.2 构造函数注入 4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 ...

    lambda-parameterized:借助lambda表达式进行类型安全的参数化JUnit测试的概念验证

    您不能依靠编译器来检查生成的参数的类型与构造函数的参数的类型或注入字段的类型是否兼容。 这是因为生成参数的方法与其目标之间只有通过注释的间接链接。 借助Java 8,无需创建大量样板代码即可创建直接链接的...

    di:兼容PSR-11的DI容器和注射器

    支持属性注入,构造函数注入和方法注入。 检测循环引用。 接受数组定义。 可以与可合并的配置一起使用。 为没有显式定义的类提供自动加载回退。 允许委派查找并具有复合容器。 支持别名。 支持服务提供商和...

    net学习笔记及其他代码应用

    答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespace test { public ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...

    php网络开发完全手册

    5.4.2 传统的构造函数 73 5.4.3 PHP类中的一些特殊方法 74 5.5 类的引用、扩展与继承 75 5.5.1 类的引用 75 5.5.2 类的扩展与继承 76 5.6 操作与调用 77 5.6.1 静态类的调用 77 5.6.2 实例类型的判断方法instanceof ...

    PHP和MySQL Web开发第4版pdf以及源码

    6.2.2 构造函数 6.2.3 析构函数 6.3 类的实例化 6.4 使用类的属性 6.5 使用private和public关键字控制访问 6.6 类操作的调用 6.7 在PHP中实现继承 6.7.1 通过继承使用private和protected访问修饰符控制可见性...

    PHP和MySQL WEB开发(第4版)

    6.2.2 构造函数 6.2.3 析构函数 6.3 类的实例化 6.4 使用类的属性 6.5 使用private和public关键字控制访问 6.6 类操作的调用 6.7 在PHP中实现继承 6.7.1 通过继承使用private和protected访问修饰符控制可见性 6.7.2 ...

    PHP和MySQL Web开发第4版

    6.2.2 构造函数 6.2.3 析构函数 6.3 类的实例化 6.4 使用类的属性 6.5 使用private和public关键字控制访问 6.6 类操作的调用 6.7 在PHP中实现继承 6.7.1 通过继承使用private和protected访问修饰符控制可见性...

    Java面试宝典2010版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    最新Java面试宝典pdf版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    千方百计笔试题大全

    3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8 7、Java 有没有goto? 8 8、int 和Integer 有什么区别? 9 9...

    java面试宝典

    3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8 7、Java 有没有goto? 8 8、int 和Integer 有什么区别? 9 9...

Global site tag (gtag.js) - Google Analytics