构造注入
Student.java
public class Student {
private String name;
private int age;
//引用类型
private School school;
public Student() {
System.out.println("Student无参构造方法");
}
//创建有参数的构造方法
public Student(String myname,int myage,School myschool){
System.out.println("Student有参构造方法");
//给属性依次赋值
this.name=myname;
this.age=myage;
this.school=myschool;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", school=" + school +
'}';
}
}
School.java
public class School {
private String name;
private String address;
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "School{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
**理解:**构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即,使用构造器设置依赖关系。
构造注入:Spring调用类的有参数构造方法,创建对象同时给属性赋值
语法:
<bean id="xxx" value="yyy"
<constructor-arg/>:表示一个构造方法的形参
标签有属性:name:构造方法形参名字
index:构造方法的参数位置
value:简单类型的形参值
ref: 引用类型的形参值
1)使用name属性
applicationContext.xml 、Student.java 、School.java
测试用例:
2)使用index属性
测试:
3)省略index属性
测试:
另外:
参考学习:参考学习笔记