首页 > 解决方案 > Spring Boot:mybatis初始化前的Flyway迁移

问题描述

在我的 Spring Boot 应用程序中,我将 Flyway 与 MyBatis 一起用于 DB 迁移。问题是 MyBatis 在 Flyway 之前初始化,因此在 DB migration 之前(在@PostConstruct 内)调用了一些DB 操作

如果我看看FlywayAutoConfiguration有:

@AutoConfigureAfter({DataSourceAutoConfiguration.class, ...})
public class FlywayAutoConfiguration { 
  ...

据我了解,我需要覆盖 FlywayAutoConfiguration 并添加:

@AutoConfigureAfter({DataSourceAutoConfiguration.class})
@AutoConfigureBefore({MybatisAutoConfiguration.class})
public class FlywayAutoConfiguration { 
  ...

不知道该怎么做。谢谢你的帮助。

标签: spring-bootflyway

解决方案


我将为您拥有的任何数据源声明一个@Bean定义,flyway()然后再声明另一个@Bean定义,确保在 flyway bean 之后对其进行初始化,您只需@DependsOn("flyway")在数据源 bean 声明上添加注释即可。

通过这种方式,您可以确保数据源启动的任何数据初始化任务都将在 flyway 完成其工作后执行。


推荐阅读