记一次项目集成flywaydb,启动加载顺序问题导致flywaydb初始化表失败

xing柠檬 / 2024-09-26 / 原文

本人遇到的情况是,项目启动时一个task类先于flywaydb执行,该task类执行时需要查询数据库,这就导致该定时任务类无法查询到定时任务执行记录表

解决方法:

@DependsOn("flywayInitializer")
@Component
public class Task {
  ......业务逻辑  
}

1、@DependsOn注解可以定义在类和方法上,意思是该组件要依赖于另一个组件,使用该注解被依赖的组件会比该组件先注册到IOC容器中。

2、flywaydb的加载是由“flywayInitializer”这个bean来负责的