Class A {
private B instanceB;
@Autowired
public setInstanceB(B instanceB) {
this.instanceB = instanceB;
}
}
Run Code Online (Sandbox Code Playgroud)
高于一对一.
Class A {
@Autowired
private B instanceB;
public setInstanceB(B instanceB) {
this.instanceB = instanceB;
}
}
Run Code Online (Sandbox Code Playgroud)
行为会根据访问修饰符而有所不同吗?
cle*_*tus 15
区别在于如果你把它放在那里就会调用setter,如果它做其他有用的东西,验证等,这很有用.通常你要比较:
public class A {
private B instanceB;
@Autowired
public setInstanceB(B instanceB) {
this.instanceB = instanceB;
}
}
Run Code Online (Sandbox Code Playgroud)
VS
public class A {
@Autowired
private B instanceB;
}
Run Code Online (Sandbox Code Playgroud)
(即没有制定者).
在这种情况下,第一种是优选的,因为缺少setter使得模拟/单元测试更加困难.即使你有一个setter但是自动装配数据成员,如果setter做了不同的事情,你也会产生问题.这会使您的单元测试无效.
| 归档时间: |
|
| 查看次数: |
5721 次 |
| 最近记录: |