DI依赖注入篇

简介: 依赖注入(Dependency Injection,DI)是一种设计模式,它用于解耦组件之间的依赖关系。在DI中,组件不再负责自己的依赖对象的创建和管理,而是由外部容器负责将依赖对象注入到组件中。

DI的底层原理可以分为两个主要步骤:依赖对象的创建和依赖对象的注入。

  1. 依赖对象的创建:
    在DI中,对象的创建通常由容器来负责。容器会维护一个对象的注册表,记录需要创建的对象及其对应的依赖关系。当需要创建一个对象时,容器会根据对象的定义和依赖关系,递归地创建依赖对象,并将它们注入到目标对象中。
  2. 依赖对象的注入:
    在对象创建完成后,容器会将依赖对象注入到目标对象中。注入的方式可以通过构造函数注入、setter方法注入或字段注入等。容器会通过反射机制调用目标对象的构造函数或setter方法,将依赖对象作为参数传入,从而完成依赖注入。

下面是一个简单的示例代码,演示了DI的基本原理:

// 定义依赖对象
public class Dependency {
    public void doSomething() {
        System.out.println("Dependency: doSomething()");
    }
}
// 定义目标对象
public class Target {
    private Dependency dependency;
    public Target(Dependency dependency) {
        this.dependency = dependency;
    }
    public void doSomething() {
        System.out.println("Target: doSomething()");
        dependency.doSomething();
    }
}
// 定义容器
public class Container {
    public static void main(String[] args) {
        // 创建依赖对象
        Dependency dependency = new Dependency();
        // 创建目标对象,并注入依赖对象
        Target target = new Target(dependency);
        // 调用目标对象的方法
        target.doSomething();
    }
}

在上面的示例中,容器负责创建依赖对象Dependency,并将其注入到目标对象Target中。最后,调用目标对象的方法,依赖对象的方法也会被调用。

需要注意的是,上述示例只是一个简单的演示,实际的DI框架通常会提供更丰富的功能和配置方式,例如通过注解配置依赖关系、支持循环依赖的解决方案等。

DI框架的源码实现相对复杂,涉及到反射、配置解析、对象生命周期管理等多个方面。常见的DI框架有Spring Framework、Google Guice等,你可以通过查阅它们的源码了解更多底层实现细节。

目录
相关文章
|
3月前
|
设计模式 Java Spring
依赖注入(DI)及其三个类
【8月更文挑战第24天】
35 0
|
5月前
|
存储 前端开发 Java
Spring IoC&DI(3)—DI详解
Spring IoC&DI(3)—DI详解
40 0
|
6月前
|
容器
02_IOC控制反转 DI依赖注入
02_IOC控制反转 DI依赖注入
46 0
|
XML Java 测试技术
springIOC(控制反转)和DI(依赖注入)
springIOC(控制反转)和DI(依赖注入)
71 0
|
6月前
|
容器
IOC 控制反转和DI依赖注入
IOC 控制反转和DI依赖注入
|
6月前
|
容器
IOC&DI
IOC&DI
35 0
|
容器
DI——依赖注入
DI——依赖注入
152 0
IOC控制反转 + DI依赖注入
一种思想,两种实现方式 IOC (Inversion of Control):控制反转,是一种概念和思想,指由Spring容器完成对象创建和依赖注入 核心业务:(a)对象的创建 (b)依赖的注入 2种实现方式 基于xml实现IOC 基于注解实现IOC 基于xml的IOC在前3篇Spring博客中简单探讨过了,后面将探讨基于注解的IOC
|
Java Spring
Spring - IOC(控制反转) & DI(依赖注入)
Spring - IOC(控制反转) & DI(依赖注入)
138 0
Spring - IOC(控制反转) & DI(依赖注入)
|
XML 存储 Java