[英]Spring setter injection guarantee
将表单构造函数注入转换为setter注入是否安全?
setter注入是否可以确保在使用时完全构造我的对象?
是的,这很安全。
使用构造函数注入 ,Spring将使用适当的参数调用构造函数(请注意,在这种情况下,您可以将final
修饰符添加到依赖项字段中)。
样品
private final SomeBean dependency;
public MyObject(SomeBean dependency){
this.dependency = dependency;
doInit();
}
private void doInit(){
//doStuff to initialize your bean
}
使用setter注入 ,Spring将使用默认构造函数(即,没有arg构造函数)实例化bean。 下一步是调用所有必需的setter,以便设置所有@Autowired依赖项。 最后,Spring将调用带有@PostConstruct批注的方法。
样品
@Autowired
private SomeBean dependency;
@PostConstruct
private void doInit(){
//doStuff to initialize your bean
}
使用setter注入有一个优点:在bean之间存在循环依赖的情况下,Spring将能够解决它们(因为它可以使用部分构建bean调用setter)。 (如果您的设置员是真正的设置员,并且除了向字段分配值外,还可以做其他事情就可以了)
另一方面,使用构造函数注入时,Spring无法解决循环依赖关系,这仅仅是因为部分构建的bean无法体面地用作构造函数参数。
我参加聚会有点晚了,但这是我的2分2分,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.