Spring - DI 依赖注入和 IoC 容器

发布时间 2023-09-13 22:14:29作者: Himmelbleu

前言

先理解 DI 依赖注入再理解 Ioc 容器更好,不应该先理解 IoC 容器再理解 DI 依赖注入。

这两个东西必须要放在一起讲,但是又要分好顺序去理解。理解之前不能先看概念,非常地抽象,应该从“为什么”起理解。总而言之,这个两个东西的出现是为了降低程序的耦合度。

DI 依赖注入

Java 里面有一个东西叫作“接口”,还有一个东西叫“抽象类”。不过这里讲的是“接口”,不知道是否听说过“面向接口编程”,而不是“面向对象编程”。我的理解是,面向对象编程的同时,也要面向接口编程。

类之间的依赖

有多个数据库连接类

在调用层中,声明一个 OrderService 对象,并调用 getOrder 函数获取订单信息。

file:[src/service/OrderService.java]
/**
 * @description:
 * @package: service
 * @author: zheng
 * @date: 2023/9/13
 */
public class OrderService {

    private final MySqlConnector mySqlConnector = new MySqlConnector();

    public void getOrder() {
        // 1. 连接数据库
        mySqlConnector.connect();
        // 2. 操作数据库获取数据
        // ...

        System.out.println("获取到了订单信息!");
    }

}

OrderService 依赖了 MySqlConnector,目前这依赖线只有这一条,如果随着业务的增加,不止一个 Service,还有 LoginService、UserService、TeacherService 等,所以,依赖线就可能如下图所示,甚至更多:

依赖关系图

更改依赖类