前言
先理解 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 等,所以,依赖线就可能如下图所示,甚至更多: