虽然在方法上加@PostConstruct,可以达到服务启动时执行某个功能的目的,但是,因为启动顺序 Constructor > @PostConstruct > InitializingBean > init-method,所以想要在该方法中从spring容器获取对象,会报空指针异常
如果,希望spring容器加载完成后,执行某个功能,就需要实现ApplicationListener<ContextRefreshedEvent> 接口:
@Component
public class InitData implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
System.out.println(“init begin…”);
}
}