WebMD
本页大纲

依赖注入(Dependency Injection)

缩写:无

简述

由外部提供组件所依赖的协作对象,而非在内部硬编码创建的技术。利于替换实现、测试与配置;可通过构造注入、组装根或容器完成。注入解决组装,不自动解决生命周期与作用域。

使用场景

服务组装、测试替身、多环境配置。

实践与应用

// 构造时注入,而非内部 new
Service(db, clock)
// 而不是
Service() { this.db = new Db() }

注意事项

• 容器过度魔法
• 循环依赖
• 作用域错误(单例持有请求态)

关联术语

• 接口:被注入的常为抽象依赖
• 控制反转:组装责任外移的更广概念
• 测试替身:注入假实现以便单测
• 组合根:集中组装对象图的位置