为了给代码中的两个参数赋值,使用了如下的两种方式,请问有何区别,实现InitializingBean接口这种方式的优势在哪?
@Component
public class TestService implements InitializingBean {
private String param1 = null;
private String param2 = null;
{
param2 = "world";
System.out.println("赋值param2,param2=" + param2);
}
@Override
public void afterPropertiesSet() throws Exception {
param1 = "hello";
System.out.println("赋值param1,param1=" + param1);
}
}
执行的时间不一样
new
出来就执行了,和容器无关afterPropertiesSet
是在容器把依赖都设置好之后调用的,这时对象的字段都有了容器设置进来的值,调用这个方法可以执行进一步的初始化,参数校验之类的逻辑