【发布时间】:2012-07-11 11:58:29
【问题描述】:
请帮助了解我应该在哪种情况下使用构造函数注入和 setter 注入。请帮助我提供适当的示例。
提前致谢。
【问题讨论】:
标签: spring
请帮助了解我应该在哪种情况下使用构造函数注入和 setter 注入。请帮助我提供适当的示例。
提前致谢。
【问题讨论】:
标签: spring
我们通常建议人们对所有人使用构造函数注入 所有其他属性的强制协作者和设置器注入。 同样,构造函数注入确保所有强制属性都具有 已经满足了,根本不可能实例化一个对象 处于无效状态(未通过其合作者)。其他 换句话说,在使用构造函数注入时,您不必使用 确保设置所需属性的专用机制(除了 正常的 Java 机制)。
【讨论】:
就个人而言,我倾向于构造函数注入,我这样做有一个主要原因。
不变性。
使用不可变对象,更容易使代码线程安全。这在处理 Spring singleton 范围对象时尤其重要。如果它们是可变的,并且在不同的线程中访问,那么更改任何共享状态都是不安全的。
不变性是有益的还有其他原因,但我会让webpage 继续讨论这个问题。
【讨论】: