Spring_三种方式的依赖注入
- 1.第一种,set方式,property
- 2.构造器注入(构造方法)
- 3.p命名空间注入
- 4、注入各种数据类型
//老师类
public class Teacher {
private String name;
private int age;
}
//课程类
public class Course {
private String courseName;
private int courseHour;
private Teacher teacher;
public String getCourseName() {
return courseName;
}
public int getCourseHour() {
return courseHour;
}
public Teacher getTeacher() {
return teacher;
}
}
teacher属性依赖自Teacher类
创建bean对象
1.第一种,set方式,property
<bean id="teacher" class="Teacher类路径">
<property name="name" value="zs"></property>
<property name="age" value="23"></property>
</bean>
<bean id="course" class="Course类路径">
<property name="courseName" value="java"></property>
<property name="courseHour" value="3"></property>
<property name="teacher" ref="Teacher"></property>
</bean>
通过代码理解依赖注入
验证set方式的注入:
执行:
底层怎么通过courseName找到setCourseName()?通过courseName拼接setCourseName(),然后在course类里面去找,用的反射技术。
2.构造器注入(构造方法)
建两个类的构造方法
<constructor-arg></constructor-arg>
上面的构造方法的顺序要保持一致
解决方案一:index
解决方案二:指定参数名
解决方案三:指定类型,前提是构造方法的参数类型都不一样
也可以都写
3.p命名空间注入
多个有参构造
现在赋值33,是给哪一个呢?
默认将“33”当成字符串
所以赋值给了name
现在指定type
现在是给age赋值,但是打印的是name的信息,name没有赋值,所以打印的是null,
三种方式的总结:
4、注入各种数据类型
通过spring容器给各个集合赋值
toString()方法:
set方式:
执行结果:
本来是一个数组,array,现在用list形式给它赋值:
set使用list的形式去写:
建议对号入座