例bean:
Teacher
public class Teacher {
private String teaName;
private Integer teaAge;
private Boolean teaGender;
private String teachCourse;
public Teacher(){
}
public String getTeaName() {
return teaName;
}
public void setTeaName(String teaName) {
this.teaName = teaName;
}
public Integer getTeaAge() {
return teaAge;
}
public void setTeaAge(Integer teaAge) {
this.teaAge = teaAge;
}
public Boolean getTeaGender() {
return teaGender;
}
public void setTeaGender(Boolean teaGender) {
this.teaGender = teaGender;
}
public String getTeachCourse() {
return teachCourse;
}
public void setTeachCourse(String teachCourse) {
this.teachCourse = teachCourse;
}
@Override
public String toString() {
return 'Teacher{' +
'teaName='' + teaName + ''' +
', teaAge=' + teaAge +
', teaGender=' + teaGender +
', teachCourse='' + teachCourse + ''' +
'}';
}
}
Student
public class Student {
private String stuName;
private Teacher teacher;
public Student(){
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
@Override
public String toString() {
return 'Student{' +
'stuName='' + stuName + ''' +
', teacher=' + teacher +
'}';
}
}
1、手动装配
<bean id='teacher' class='BeanDemo.Demo01.Teacher'>
<property name='teaName' value='李老师'></property>
<property name='teaAge' value='35'></property>
<property name='teaGender' value='true'></property>
<property name='teachCourse' value='Java'></property>
</bean>
<bean id='student' class='BeanDemo.Demo01.Student'>
<property name='stuName' value='小明'></property>
<property name='teacher' ref='teacher'></property>
</bean>
2、自动装配
方式一:byName
<bean id='teacher' class='BeanDemo.Demo01.Teacher'>
<property name='teaName' value='李老师'></property>
<property name='teaAge' value='35'></property>
<property name='teaGender' value='true'></property>
<property name='teachCourse' value='Java'></property>
</bean>
<bean id='student' class='BeanDemo.Demo01.Student' autowire='byName'>
<property name='stuName' value='小明'></property>
</bean>
方式二:byType
<bean id='teacher' class='BeanDemo.Demo01.Teacher'>
<property name='teaName' value='李老师'></property>
<property name='teaAge' value='35'></property>
<property name='teaGender' value='true'></property>
<property name='teachCourse' value='Java'></property>
</bean>
<bean id='student' class='BeanDemo.Demo01.Student' autowire='byType'>
<property name='stuName' value='小明'></property>
</bean>
方式三:constructor
为Student添加有参构造器
public class Student {
private String stuName;
private Teacher teacher;
public Student(){
}
public Student(String stuName,Teacher teacher){
this.stuName = stuName;
this.teacher = teacher;
}
......
(省略get、set方法)
}
配置构造器自动装配
<bean id='teacher' class='BeanDemo.Demo01.Teacher'>
<property name='teaName' value='李老师'></property>
<property name='teaAge' value='35'></property>
<property name='teaGender' value='true'></property>
<property name='teachCourse' value='Java'></property>
</bean>
<bean id='student' class='BeanDemo.Demo01.Student' autowire='constructor'>
<constructor-arg name='stuName' value='张三'></constructor-arg>
</bean>
扩展:可以在头文件中 一次性将该ioc容器的所有bean 统一设置成自动装配:
<beans xmlns="http://www.springframework.org/schema/beans"
...
default-autowire="byName">
自动装配虽然可以减少代码量,但是会降低程序的可读性,使用时需要谨慎。