有没有办法在Spring启动时运行Flyway Java-based callbacks? 我正在转换一个现有的项目,每次迁移后更新一些视图定义,这是由Java完成的,因为它需要一些额外的逻辑。我知道它可以在pl/pgsql(我们正在使用Postgres)中完成,但它已经完成并在Java中进行了测试。使用Spring Boot运行Flyway基于Java的回调
Spring boot docs说这是可能的,但它列出回调脚本应该居住在相同的目录作为迁移,也许这只适用于基于SQL的回调。
此代码的工作没有Spring启动:
Flyway flyway = new Flyway();
flyway.setDataSource(this.getDataSource());
flyway.setLocations("/db/migration");
flyway.setCallbacks(new LogMaintenanceFlywayCallback());
flyway.migrate();
我有几个/db/migration
迁移和每一个后,我需要执行我的回调。它在我当前的项目中起作用,并且我需要在Spring Boot中执行相同的操作(或另一种方式来获得相同的行为)。
它的工作原理。您需要将Java类放入'db.migrations'包中。 –
他们是否必须在标准中命名?我创建了一个'SomeMaintenanceFlywayCallback',实现了接口'FlywayCallback'和'afterEachMigrate'方法没有被调用。我曾尝试将该类重命名为'AfterEachMigrate',但没有成功。它在'db.migrations'包中,并行执行Java迁移,因此构建路径正常。 –
SQL迁移应该在'src/main/resources/db/migration'中。 Java迁移应该在'src/main/java/db/migration'中。每个文件通常以'Vxxx__some-text-here.sql'或Vxxx__MyJavaClass.java'开头。 –