依赖注入(Dependency Injection, DI)是一种设计模式,也是Spring框架的核心概念之一。
依赖注入可以自动配置一个类所依赖的类,例如Student类中包含Teacher类:
public class Student {
private Teacher teacher = new ProgramTeacher();
...
如果手动设置(如上),假如要更改teacher实例,就需要对所有引用该teacher的类进行修改,因此我们可以通过 property
属性来配置依赖注入。
<bean name="teacher" class="com.test.bean. "/>
<bean name="student" class="com.test.bean.Student">
<property name="teacher" ref="teacher"/>
</bean>
其中 name 是在该类中的依赖类变量名,ref 是要依赖的类的名字。
同时还需要让 Student 类对应的属性存在一个 set 方法:
public class Student {
private Teacher teacher;
//要使用依赖注入,我们必须提供一个set方法(无论成员变量的访问权限是什么)命名规则依然是驼峰命名法
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
...
这样如果要替换 teacher 的实现类时,只需要修改上述 bean 中的 ProgramTeacher
即可,引用的 bean 并不需要更改。
注解
value 传简单值
当然,依赖注入并不一定要注入其他的Bean,也可以是一个简单的值:
<bean name="student" class="com.test.bean.Student">
<property name="name" value="卢本伟"/>
</bean>
直接使用value
可以直接传入一个具体值。