如何理解 IoC DI
IoC: Inverse of Control 控制反转.
DI: Dependency Injection 依赖注入.
DL: Dependency Lookup 依赖查找.
对于一个有复杂依赖的系统, 比如组装电脑, 有整机, 主板, CPU 等层次和模块.
CPU 插到主板上, 主板插到整机里.
如果正向依赖, 构造一台整机, 整机自己需要实例化一连串的对象, 他知道主板的构造参数, 也需要知道 CPU 的构造参数.
一方面是构造困难, 再就是修改困难, 改一个基础元件就需要改整条依赖链.
IoC 就是为了解决这种耦合, 把以前整机需要自己构造对象的控制权交出来. 让整机只需要关心如何组装零件, 不用关心如何制造零件.
IoC 是一种策略, DI 和 DL 是 IoC 的具体实现方式.
DL 很少使用了, 他需要显示的调用 IoC 容器来获取依赖.
DI 是把内部依赖交给 IoC 容器来注入, 可以通过 Setter(@Autowired
) 或者 构造器(@RequiredArgsConstructor
).