请帮助理解我应该在哪种情况下使用构造函数注入和setter注入。请用适当的例子帮我。
提前致谢。
答案 0 :(得分:3)
我们通常建议人们使用构造函数注入 所有其他属性的强制协作者和setter注入。 同样,构造函数注入确保所有必需属性都具有 已经满意了,根本不可能实例化一个对象 处于无效状态(未通过其合作者)。其他 单词,当使用构造函数注入时,您不必使用 确定所需属性的专用机制(除了 正常的Java机制)。
答案 1 :(得分:3)
就个人而言,我倾向于构造函数注入,我这样做是出于一个主要原因。
不变性。
使用不可变对象,可以更容易地使代码线程安全。在处理Spring singleton
范围对象时,这一点尤其重要。如果它们是可变的,并且在不同的线程中访问,则更改任何共享状态是不安全的。
还有其他原因,不变性是有益的,但我会让webpage继续讨论。