春季二传手注射和构造函数注射

时间:2012-07-11 11:58:29

标签: spring

请帮助理解我应该在哪种情况下使用构造函数注入和setter注入。请用适当的例子帮我。

提前致谢。

2 个答案:

答案 0 :(得分:3)

  

我们通常建议人们使用构造函数注入   所有其他属性的强制协作者和setter注入。   同样,构造函数注入确保所有必需属性都具有   已经满意了,根本不可能实例化一个对象   处于无效状态(未通过其合作者)。其他   单词,当使用构造函数注入时,您不必使用   确定所需属性的专用机制(除了   正常的Java机制)。

更多详情http://blog.springsource.org/2007/07/11/setter-injection-versus-constructor-injection-and-the-use-of-required/

答案 1 :(得分:3)

就个人而言,我倾向于构造函数注入,我这样做是出于一个主要原因。

  

不变性。

使用不可变对象,可以更容易地使代码线程安全。在处理Spring singleton范围对象时,这一点尤其重要。如果它们是可变的,并且在不同的线程中访问,则更改任何共享状态是不安全的。

还有其他原因,不变性是有益的,但我会让webpage继续讨论。