2012-07-11 258 views

回答

3

我们通常建议人们为所有其他属性的所有 强制合作者和setter注入使用构造函数注入。 同样,构造函数注入确保所有强制性属性都已满足 ,并且无法实例化对象 处于无效状态(未通过其协作者)。在其他 单词中,当使用构造函数注入时,不必使用 专用机制来确保设置所需的属性(而不是 正常的Java机制)。

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

3

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

不变性。

对于不可变对象,使代码线程安全更容易。这在处理弹性域对象时尤为重要。如果它们是可变的,并且在不同的线程中访问,则更改任何共享状态是不安全的。

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

+0

你是对的关键点是不可变性。许多Spring用户应该知道如何在不使用不可变对象时影响GC。 – 2013-05-27 11:29:42