⚙️ IOC 控制反转与 DI 依赖注入
在传统的编程模式中,对象A依赖对象B时,通常由A主动去new B()。而 Spring IOC(Inversion of Control)则是将对象的创建权和控制权反转给Spring容器。开发者只需在配置中声明依赖,容器在运行时负责实例化、装配对象。
DI(Dependency Injection) 是 IOC 的具体实现方式。常见的注入方式包括构造器注入、Setter注入和字段注入(@Autowired)。在Spring 官方推荐中,构造器注入因其能确保依赖不可变且支持必填校验,被视为最佳实践。
| 注入方式 | 优点 | 缺点 |
|---|---|---|
| 构造器注入 | 保证依赖不可变,支持必填检查 | 参数过多时代码臃肿 |
| Setter注入 | 可选依赖,灵活性高 | 无法保证依赖非空 |
| @Autowired字段注入 | 代码简洁 | 隐藏依赖,不利于测试 |