2016-07-14 143 views
0

摘自Spring doc构造基于依赖注入

的Spring团队主张构造函数注入,因为它使一个实现应用程序组件不可变对象,并确保所需的依赖不为空。

我的问题是不变性以及空的依赖是否只能使用基于构造DI &是不是通过setter方法实现基于DI?

+1

如果您忘记调用setter,其相应的属性将保持未初始化状态,即null,编译器不会抱怨。如果你首先有* setter,那么你明确允许修改。你需要什么样的例子来说明这一点? – kryger

+0

调用setter会改变对象,所以我不确定我是否理解你的问题。 – zeroflagL

回答

0

如果您的类A为类B的依赖对象公开了setter方法,那么您可以在A的实例上调用setter方法并更改依赖关系。 如果您的类A只能通过构造函数参数接收类B的依赖对象,那么您将组件作为不可变对象,此外,自动装配默认情况下不需要空对象,然后如果将空对象传递给构造函数参数spring不能实例化对象,确保所需的依赖关系不为null。