前面一段时间,开发的应用系统中,写了多个PostConstruct方法,其中有一个是执行脚本,而其它的PostConstruct方法刚刚又会去读数据库,导致启动失败,在网上搜索了半天,也没有找到它们之前的执行顺序,最后发现Service之间可以配置依赖关系,而PostConstruct是在Service初始化之后,随即调用,因此,控制Service初始化顺序就可以控制PostConstruct执行顺序。
如:
@Service
@DependsOn("dbScriptUpdate")
public class AaIDSchedule {
@PostConstruct
public void init() {
}
}
@Service
public class DbScriptUpdate {
@PostConstruct
public void updateDb() {
}
}
spring boot会保证DbScriptUpdate 先初始化,并且它的updateDb先执行。