依赖注入(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 并不需要更改。

注解

property 依赖注入

value 传简单值

当然,依赖注入并不一定要注入其他的Bean,也可以是一个简单的值:

<bean name="student" class="com.test.bean.Student">
    <property name="name" value="卢本伟"/>
</bean>

直接使用value可以直接传入一个具体值。