SpringbootとFlywayを使用しています。移行は問題なく機能しますが、アプリケーションコンテキストにclean
プロファイルが読み込まれたときにtest
フライウェイコマンドを実行できるようにしたかったのです。
アクティブなプロファイルがclean
の場合、migrate
を実行してからtest
を実行するようにSpringBootを構成することは可能ですか?
Flywayの自動構成は次のように上書きできます。
@Bean
@Profile("test")
public Flyway flyway(DataSource theDataSource) {
Flyway flyway = new Flyway();
flyway.setDataSource(theDataSource);
flyway.setLocations("classpath:db/migration");
flyway.clean();
flyway.migrate();
return flyway;
}
Spring Boot 1.3(現在のバージョンは1.3.0.M1、GAリリースは9月に予定されています))では、FlywayMigrationStrategy Beanを使用して、実行するアクションを定義できます。
@Bean
@Profile("test")
public FlywayMigrationStrategy cleanMigrateStrategy() {
FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
@Override
public void migrate(Flyway flyway) {
flyway.clean();
flyway.migrate();
}
};
return strategy;
}
spring Bootの最新バージョン(例:2.0.2)では、SQLファイルの変更のためにcleanを使用する場合は、プロパティspring.flyway.clean-on-validation-error
を使用できます。