有没有一种方法可以使用Spring Boot运行Flyway Java-based callbacks?
我正在转换一个现有项目,该项目在每次迁移后都会更新一些 View 定义,这是由Java完成的,因为它需要一些额外的逻辑。我知道可以在pl/pgsql中完成(我们正在使用Postgres),但是它已经在Java中完成并经过测试。
Spring boot docs表示可能,但已列出回调脚本应与迁移位于相同的目录中,也许这仅适用于基于SQL的回调。
这段代码在没有Spring Boot的情况下有效:
Flyway flyway = new Flyway();
flyway.setDataSource(this.getDataSource());
flyway.setLocations("/db/migration");
flyway.setCallbacks(new LogMaintenanceFlywayCallback());
flyway.migrate();
我在
/db/migration
中进行了几次迁移,每次迁移之后都需要执行回调。它可以在我当前的项目中工作,并且我需要在Spring Boot中执行相同的操作(或通过其他方式获得相同的行为)。 最佳答案
您可以有一个这样的配置,它将起作用:
@Configuration
public class FlywayFactory {
@Bean
public FlywayMigrationInitializer flywayInitializer(Flyway flyway, FlywayCallback flywayCallback) {
flyway.setCallbacks(flywayCallback);
return new FlywayMigrationInitializer(flyway);
}
@Bean
public FlywayCallback flywayCallback() {
return new LogMaintenanceFlywayCallback();
}
}