揭示现场注入:优点和陷阱
深入研究注入类型
领域依赖注入,将依赖关系引入到bean中主要有三种方法:构造函数注入, setter 注入和现场注入。后者使用 @Autowired 直接将依赖项注入到字段中,引起了人们的关注。
揭示字段注入的缺点
字段注入带来了几个挑战:
-
不变性障碍:与构造函数注入不同,字段注入阻碍了不可变对象的创建。
-
DI 容器依赖:通过字段注入的类紧密绑定到 DI 容器,限制了它们的外部使用。
-
实例化约束: 字段注入类需要 DI 容器来实例化,使单元复杂化测试。
-
隐藏的依赖项:真正的依赖项仍然隐藏,损害界面清晰度。
-
过多的依赖项扩散:字段注入可能允许无限的依赖项添加违反单一责任原理。
不同注入类型的优缺点
构造函数注入
- 优点:强制强制依赖关系,促进不变性,反映真实的依赖关系接口。
- 缺点:大量依赖项的复杂构造函数。
Setter 注入
- 优点:允许可选或可更改的依赖项。
- 缺点:比构造函数更冗长
字段注入
避免和替代方案
鉴于其缺点,应避免现场注入。相反,请考虑使用构造函数注入来实现强制依赖项或不变性,并考虑使用 setter 注入来实现可选或可修改的依赖项。
更多资源
- 博客文章:“字段依赖注入被认为有害”
-
春天文档:
- Spring 4.2:IoC 容器、基于构造函数的依赖注入、基于 Setter 的依赖注入
- Spring 6.0.9:IoC 容器、基于构造函数的依赖注入、Setter-基于依赖关系注射
以上是依赖注入中的字段注入:优点、缺点和最佳实践?的详细内容。更多信息请关注PHP中文网其他相关文章!