1

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

提前致谢。

4

2 回答 2

3

我们通常建议人们对所有强制协作者使用构造函数注入,对所有其他属性使用 setter 注入。同样,构造函数注入可确保满足所有强制属性,并且根本不可能实例化处于无效状态的对象(未传递其协作者)。换句话说,当使用构造函数注入时,您不必使用专用机制来确保设置所需的属性(除了普通的 Java 机制)。

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

于 2012-07-11T12:18:33.500 回答
3

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

不变性。

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

不变性是有益的还有其他原因,但我会让网页继续讨论这个问题。

于 2012-07-11T13:09:03.327 回答