Class A {
private B instanceB;
@Autowired
public setInstanceB(B instanceB) {
this.instanceB = instanceB;
}
}
高于一个与这个。
Class A {
@Autowired
private B instanceB;
public setInstanceB(B instanceB) {
this.instanceB = instanceB;
}
}
行为会因访问修饰符而有所不同吗?
最佳答案
不同之处在于,如果在该 setter 中放置了setter,它将被调用,这在执行其他有用的操作,验证等操作时很有用。通常,您正在比较:
public class A {
private B instanceB;
@Autowired
public setInstanceB(B instanceB) {
this.instanceB = instanceB;
}
}
与
public class A {
@Autowired
private B instanceB;
}
(即没有二传手)。
在这种情况下,第一个是可取的,因为缺少 setter 会使模拟/单元测试更加困难。即使您有一个设置员,但可以自动连接数据成员,但是如果设置员执行了其他操作,则可能会造成问题。这会使您的单元测试无效。
关于java - 将@Autowired放入变量和方法之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1659951/