spring入门(7)---装配Bean中构造参数的注入

2014-11-24 11:14:44 · 作者: · 浏览: 1

在spring装配bean中还有一种Set注入的替代,那就是构造参数的注入。

set注入是一种直接方式,缺点是它假设了所 有的可变属性都可以通过set方法访问到。例如有些属性在创建时设置一次,以后不再改变。替代方式是通过构造函数设置一些属性值。还有它无法清晰表达哪些属性是必须的,哪些是可选的,构造注入的优势是通过构造强制依赖关系,不可能实例化不完全的或无法使用的bean。下面是构造器的几种注入方式:

1.通过构造函数注入 (原始方式)

2.根据构造器参数的类型

3.根据索引index注入

4.根据参数名称注入

EmployeeBean.java

[java]
package www.csdn.spring.constructor.bean;

public class EmployeeBean {

private String name;
private Double salary;
private Dept dept;
private String sex;

// 构造器函数
public EmployeeBean(String name, Double salary, Dept dept, String sex) {
super();
this.name = name;
this.salary = salary;
this.dept = dept;
this.sex = sex;
}

@Override
public String toString() {
return "EmployeeBean [name=" + name + ", salary=" + salary + ", dept="
+ dept + ", sex=" + sex + "]";
}

}

package www.csdn.spring.constructor.bean;

public class EmployeeBean {

private String name;
private Double salary;
private Dept dept;
private String sex;

// 构造器函数
public EmployeeBean(String name, Double salary, Dept dept, String sex) {
super();
this.name = name;
this.salary = salary;
this.dept = dept;
this.sex = sex;
}

@Override
public String toString() {
return "EmployeeBean [name=" + name + ", salary=" + salary + ", dept="
+ dept + ", sex=" + sex + "]";
}

}

Dept.java

[java]
package www.csdn.spring.constructor.bean;

public class Dept {

private String name;
private String deptno;

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

public void setDeptno(String deptno) {
this.deptno = deptno;
}

@Override
public String toString() {
return "Dept [name=" + name + ", deptno=" + deptno + "]";
}

}

package www.csdn.spring.constructor.bean;

public class Dept {

private String name;
private String deptno;

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

public void setDeptno(String deptno) {
this.deptno = deptno;
}

@Override
public String toString() {
return "Dept [name=" + name + ", deptno=" + deptno + "]";
}

}

spring-constructor.java

[html]
< xml version="1.0" encoding="UTF-8" >
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">













ref="dept" />











< xml version="1.0" encoding="UTF-8" >
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">







ref="dept" />