概念: spring调用类中的set方法,在set方法中可以完成属性赋值。 推荐使用。
创建spring配置文件Alt insert ---->xml
对应包的spring配置文件:
String config = "bao1/applicationContext.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
applicationContext.xml
Student.java
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
}
MyTest.java
@Test
public void test01(){
String config = "bao1/applicationContext.xml";
ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
Student student = (Student) ctx.getBean("mystudent");
System.out.println("Studen:" + student);
}
此时没有给属性赋值:
简单类型的set注入: spring调用类的set()方法,通过set()方法完成属性赋值
语法:...
applicationContext.xml
执行test01
在set方法中添加输出语句:
public class Student {
private String name;
private int age;
public void setName(String name) {
System.out.println("setName=="+name);
this.name = name;
}
public void setAge(int age) {
System.out.println("setAge=="+age);
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
}
添加一个无参构造:
public class Student {
private String name;
private int age;
public Student() {
System.out.println("Student的无参数构造方法");
}
public void setName(String name) {
System.out.println("setName=="+name);
this.name = name;
}
public void setAge(int age) {
System.out.println("setAge=="+age);
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
}
若将set方法去掉则会报错:
set()方法里面是由自己实现的:
添加一个setEmail()方法:
给属性赋值看的是set方法,与属性名无关,与有没有属性无关,看的只是set方法,有set就是正确的
语法:
...
Student.java
public class Student {
private String name;
private int age;
//引用类型
private School school;
public Student() {
System.out.println("Student的无参数构造方法");
}
public void setName(String name) {
System.out.println("setName=="+name);
this.name = "Hello" + name;
}
public void setAge(int age) {
System.out.println("setAge=="+age);
this.age = age;
}
public void setSchool(School school) {
System.out.println("setSchool==" + school);
this.school = school;
}
@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体现一下:
School声明在student前后的顺序无所谓(id和ref区分大小写)



