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 就会被调用,如果它做其他有用的东西、验证等,这很有用。通常你是在比较:
public class A {
private B instanceB;
@Autowired
public setInstanceB(B instanceB) {
this.instanceB = instanceB;
}
}
对
public class A {
@Autowired
private B instanceB;
}
(即没有 setter )。
在这种情况下,第一个更可取,因为缺少 setter 会使模拟/单元测试更加困难。即使你有一个 setter 但 Autowiring 数据成员,如果 setter 做了一些不同的事情,你也会产生问题。这将使您的单元测试无效。
关于java - 将 @Autowired 放入变量和方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1659951/