Spring 弹簧设定器注入和构造器注入
请让我们帮助理解在哪种情况下我应该使用用户构造函数注入和setter注入。请帮我举个适当的例子 提前谢谢 我们通常建议人们使用构造函数注入 所有其他属性的强制协作者和setter注入。 同样,构造函数注入确保所有必需属性都具有 已经满足了,并且根本不可能实例化一个对象 处于无效状态(未通过其协作者)。换句话说 换句话说,当使用构造函数注入时,您不必使用 确保设置所需属性的专用机制(除 普通Java机制) 更多细节 我们通常建议人们使用构造函数注入 所有其他属性的强制协作者和setter注入。 同样,构造函数注入确保所有必需属性都具有 已经满足了,并且根本不可能实例化一个对象 处于无效状态(未通过其协作者)。换句话说 换句话说,当使用构造函数注入时,您不必使用 确保设置所需属性的专用机制(除 普通Java机制)Spring 弹簧设定器注入和构造器注入,spring,Spring,请让我们帮助理解在哪种情况下我应该使用用户构造函数注入和setter注入。请帮我举个适当的例子 提前谢谢 我们通常建议人们使用构造函数注入 所有其他属性的强制协作者和setter注入。 同样,构造函数注入确保所有必需属性都具有 已经满足了,并且根本不可能实例化一个对象 处于无效状态(未通过其协作者)。换句话说 换句话说,当使用构造函数注入时,您不必使用 确保设置所需属性的专用机制(除 普通Java机制) 更多细节 我们通常建议人们使用构造函数注入 所有其他属性的强制协作者和setter注入。 同
更多细节就我个人而言,我倾向于构造函数注入,我这样做有一个主要原因 不变性 对于不可变对象,更容易使代码线程安全。这在处理Spring
singleton
scope对象时尤其重要。如果它们是可变的,并且在不同的线程中访问,那么更改任何共享状态都是不安全的
不变性是有益的还有其他原因,但我会继续讲下去。就我个人而言,我倾向于构造函数注入,我这样做有一个主要原因 不变性 对于不可变对象,更容易使代码线程安全。这在处理Spring
singleton
scope对象时尤其重要。如果它们是可变的,并且在不同的线程中访问,那么更改任何共享状态都是不安全的
不变性是有益的还有其他原因,但我会继续讲下去。你说得对,关键是不变性。许多Spring用户应该知道在不使用不可变对象的情况下GC是如何起作用的。你是对的,关键是不可变。许多Spring用户应该知道在不使用不可变对象的情况下GC是如何起作用的。我以前见过这种解释,但仍然无法理解其背后的含义。这里的强制合作者是什么?如果我尝试在field/constructor/setter上注入不存在的bean,初始化将失败。那么,我怎么能不满足所需的依赖关系呢?(除了将null作为ctor arg传递之外)我以前看到过这种解释,但仍然无法理解其背后的含义。这里的强制合作者是什么?如果我尝试在field/constructor/setter上注入不存在的bean,初始化将失败。那么,我怎么能不满足所需的依赖关系呢?(除了将null作为ctor arg传递之外)