diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java index ed6e4d51298..ddf1e9b4727 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java @@ -75,6 +75,9 @@ public class FlywayAutoConfiguration { @FlywayDataSource private DataSource flywayDataSource; + @Autowired(required = false) + private FlywayMigrationStrategy migrationStrategy; + @PostConstruct public void checkLocationExists() { if (this.properties.isCheckLocation()) { @@ -96,12 +99,6 @@ public class FlywayAutoConfiguration { return false; } - @Bean - @ConditionalOnMissingBean - public FlywayMigrationStrategy flywayMigrationStrategy() { - return new FlywayMigrationStrategy(); - } - @Bean @ConfigurationProperties(prefix = "flyway") public Flyway flyway() { @@ -121,9 +118,8 @@ public class FlywayAutoConfiguration { } @Bean - public FlywayMigrationInitializer flywayInitializer(Flyway flyway, - FlywayMigrationStrategy migrationStrategy) { - return new FlywayMigrationInitializer(flyway, migrationStrategy); + public FlywayMigrationInitializer flywayInitializer(Flyway flyway) { + return new FlywayMigrationInitializer(flyway, this.migrationStrategy); } @@ -163,7 +159,12 @@ public class FlywayAutoConfiguration { @Override public void afterPropertiesSet() throws Exception { - this.migrationStrategy.migrate(this.flyway); + if (this.migrationStrategy != null) { + this.migrationStrategy.migrate(this.flyway); + } + else { + this.flyway.migrate(); + } } } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayMigrationStrategy.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayMigrationStrategy.java index 4bfbc3674dc..7d8dc0e8921 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayMigrationStrategy.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayMigrationStrategy.java @@ -25,10 +25,12 @@ import org.flywaydb.core.Flyway; * @author Andreas Ahlenstorf * @author Phillip Webb */ -public class FlywayMigrationStrategy { +public interface FlywayMigrationStrategy { - public void migrate(Flyway flyway) { - flyway.migrate(); - } + /** + * Trigger flyway migration. + * @param flyway the flyway instance + */ + void migrate(Flyway flyway); } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java index 468a2313d1e..ee151c6e44c 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java @@ -180,7 +180,7 @@ public class FlywayAutoConfigurationTests { } @Component - protected static class MockFlywayMigrationStrategy extends FlywayMigrationStrategy { + protected static class MockFlywayMigrationStrategy implements FlywayMigrationStrategy { private boolean called = false;