摘自Spring doc:
Spring团队通常提倡构造函数注入,因为它使应用程序组件能够实现为不可变对象,并确保所需的依赖项不为空。
我的问题是,只有使用基于构造函数的DI&是通过基于setter的DI无法实现的吗?
答案 0 :(得分:0)
如果您的类A公开了类B的依赖对象的setter方法,那么您可以在A实例上调用setter方法并更改依赖项。 如果您的类A只能通过构造函数参数接收B类的依赖对象,那么您将组件作为不可变对象,此外默认情况下自动装配不需要null对象然后如果将null对象传递给构造函数参数spring无法实例化对象,这样可以确保必需的依赖项不为空。