我有一个关于Spring依赖注入的快速问题。我有两个虚拟类,它们都使用一点不同的方法,在这里提出了问题。哪个更好?为什么?
FIRST APPROACH
public class ClassName {
private final Object obj;
public ClassName(Object obj){
this.obj = obj;
}
SECOND APPROACH
public class ClassName {
private Object obj;
@Autowired
public ClassName(Object obj){
this.obj = obj;
}
答案 0 :(得分:1)
两者之间没有区别,因为它们只有一个构造函数。唯一的情况是,在具有多个构造函数的情况下进行依赖项注入时,应在构造函数上使用@Autowired
。例如:
@Component
public class ClassName {
final Object obj;
public ClassName() {
this.obj = null; // null or something else
}
@Autowired
public ClassName(Object obj) {
this.obj = obj;
}
}
如果您不打算在构造函数上使用@Autowired
,则打算使用默认参数初始化默认值,那么将选择no-arg构造函数。因此,在上述情况下,如果省略@Autowired
,则obj
的值将设置为null
。