我已经阅读了以下内容作为构造函数和setter注入之间的区别之一。有人可以通过一些简单的例子解释下面的区别,我对术语完全功能对象和不完整的对象有点混淆。
- >构造函数DI允许以完整状态创建对象,并遵循全功能对象的原则,而Setter DI允许创建对象而不依赖它。如果依赖项不可用,可能会导致不完整的对象。
答案 0 :(得分:1)
使用构造函数注入时,应该通过构造函数提供所有必需的依赖项,因为不应该有任何setter,以便稍后注入它们。所以实例具有所有必需的依赖性!
使用 Setter Injection ,创建实例可能在那里,但没有所有必需的依赖项(因为它们尚未通过setter设置)。用户可以在不设置de required依赖项的情况下使用该对象。
另见Dependency injection through constructors or property setters?