Nestjs文档描述了注入依赖项的两种主要方法:基于构造函数的注入和基于属性的注入。它还提到,在可能的情况下,基于构造函数的注入应优先于基于属性的注入,而无需任何说明原因。
这有什么具体原因吗?还是只是某种代码风格指南?
Ras*_*han -2
警告如果您的类没有扩展另一个提供程序,您应该始终更喜欢使用基于构造函数的注入。
Nestjs 文档确实提到了总是更喜欢基于构造函数的注入的原因。它指出,如果您的类没有扩展另一个提供程序,那么我们应该始终使用基于构造函数的注入。
这意味着,如果您的类具有可选依赖项,那么您可以使用基于属性的注入,否则您必须使用基于构造函数的注入。
考虑一下,依赖于 B 类的 A 类,如果未注入 B 类,则 A 类将不起作用,在这种情况下,这是强制依赖项,因此我们必须使用基于构造函数的注入。
然而,同样的 A 类也依赖于 C 类,但如果没有注入 C 类,A 类仍然可以工作,在这种情况下,它是一个可选的依赖项,因此我们可以在这里使用基于属性的注入。
您可以在这里阅读更多相关内容:
https://khalilstemmler.com/articles/tutorials/dependency-injection-inversion-explained/ http://dillonbuchanan.com/programming/dependency-injection-constructor-vs-property/
| 归档时间: |
|
| 查看次数: |
3282 次 |
| 最近记录: |