spring-boot - 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 {
...
不知道该怎么做。谢谢你的帮助。
解决方案
我将为您拥有的任何数据源声明一个@Bean
定义,flyway()
然后再声明另一个@Bean
定义,确保在 flyway bean 之后对其进行初始化,您只需@DependsOn("flyway")
在数据源 bean 声明上添加注释即可。
通过这种方式,您可以确保数据源启动的任何数据初始化任务都将在 flyway 完成其工作后执行。
推荐阅读
- postgresql - 尝试创建物化视图时在“Z”处或附近出现语法错误
- python - Django:尝试在 ImageField 表单上上传图像时出现错误 404
- javascript - KonvaJS:如何根据鼠标移动画一条线来连接两个形状?
- python - 如何使用 lex/flex 通过三引号 """...""" 解析 python 多行字符串?
- postgresql - 想要在 Postgresql 中使用 SQL 打印运行顺序值较低的记录
- javascript - 在Angularjs中动态分配ng-model并读取Controller函数中的值
- php - 使用 ACF 在文本字段中保存数组是否存在风险?
- reactjs - 静态站点生成页面 (SSG) 与非 SSG 页面加缓存相比有何优势?
- ruby-on-rails - 我有两个使用 mail_form 构建的联系表格。一个有效,一个无效,即使从我的角度来看它们是相同的
- arrays - Pandas lambda 以有效的方式应用于两列列表