为什么在 Nestjs 中基于构造函数的注入优于基于属性的注入

bud*_*dha 7 nestjs

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/