三种方式可以实现bean的生命周期初始化回调
1.在方法上加@PostConstruct注解
2.在xml中配置init-method方法
3.实现InitializingBean接口,并重写afterPropertiesSet方法
那么这三种方式同时存在时,它们的执行顺序如何呢?
@Component
@Data
public class A implements InitializingBean{
@Autowired
private B b;
public A(){
System.out.println("调用了A的无参构造函数");
}
@PostConstruct
public void postConstruct(){
System.out.println("执行了---postConstruct---生命周期的初始化回调");
}
public void classPathXml(){
System.out.println("执行了---xml---生命周期初始化回调");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("执行了---InitializingBean接口---生命周期初始化回调");
}
}
执行查看打印顺序
因此可以得到结论:
执行顺序:@PostConstruct注解–>重写的afterPropertiesSet方法–>xml配置的init-method方法