【发布时间】:2022-02-15 16:58:59
【问题描述】:
我有一个基于 Spring Boot 的应用程序,我想在其上运行 Flyway 迁移。该应用程序仅在某些情况下才需要运行 flyway 迁移。例如,如果“迁移”参数被传递给 Main()。
还有 2 个不同的数据源需要迁移。
@SpringBootApplication
public class ExampleMain implements CommandLineRunner {
public static void main(String[] args) {
new SpringApplicationBuilder(ExampleMain.class)
.web(WebApplicationType.NONE)
.run(args);
}
@Override
public void run(String... args) throws Exception {
if (args[0].equals("migrate"))
migrate();
else
System.out.println("The world is round");
}
private void migrate() {
createFlywayForDb1().migrate();
createFlywayForDb2().migrate();
}
private Flyway createFlywayForDb1() {
return createFlyway("XXX", "XXX", "XXX", new String[] { "classpath:com/example/migrations/db1" } );
}
private Flyway createFlywayForDb2() {
return createFlyway("ZZZ", "ZZZ", "ZZZ", new String[] { "classpath:com/example/migrations/db2" } );
}
private Flyway createFlyway(String url, String userName, String userPassword, String[] locations) {
return Flyway.configure()
.dataSource(url, userName, userPassword)
.locations(locations)
.ignoreMissingMigrations(true)
.ignoreIgnoredMigrations(true)
.load();
}
}
Flyway.migrate() 在这种情况下不起作用,因为 Java 迁移类需要注入它们的 Spring Boot bean。有什么方法可以自动加载 Flyway 实例吗?
我已阅读this,但找不到执行上述操作的方法。任何帮助将不胜感激!
【问题讨论】:
标签: spring-boot flyway