diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java index c73d979bd4..3e8edddd8f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java @@ -119,10 +119,9 @@ public class FlywayAutoConfiguration { configureProperties(configuration, properties); List orderedCallbacks = callbacks.orderedStream().collect(Collectors.toList()); configureCallbacks(configuration, orderedCallbacks); - fluentConfigurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration)); - configureFlywayCallbacks(configuration, orderedCallbacks); List migrations = javaMigrations.stream().collect(Collectors.toList()); configureJavaMigrations(configuration, migrations); + fluentConfigurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration)); return configuration.load(); } @@ -245,12 +244,6 @@ public class FlywayAutoConfiguration { } } - private void configureFlywayCallbacks(FluentConfiguration flyway, List callbacks) { - if (!callbacks.isEmpty()) { - flyway.callbacks(callbacks.toArray(new Callback[0])); - } - } - private void configureJavaMigrations(FluentConfiguration flyway, List migrations) { if (!migrations.isEmpty()) { flyway.javaMigrations(migrations.toArray(new JavaMigration[0])); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java index a5297381c8..9f30802049 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java @@ -467,6 +467,17 @@ class FlywayAutoConfigurationTests { }); } + @Test + void callbackAndMigrationBeansAreAppliedToConfigurationBeforeCustomizersAreCalled() { + this.contextRunner + .withUserConfiguration(EmbeddedDataSourceConfiguration.class, FlywayJavaMigrationsConfiguration.class, + CallbackConfiguration.class) + .withBean(FlywayConfigurationCustomizer.class, () -> (configuration) -> { + assertThat(configuration.getCallbacks()).isNotEmpty(); + assertThat(configuration.getJavaMigrations()).isNotEmpty(); + }).run((context) -> assertThat(context).hasNotFailed()); + } + @Test void batchIsCorrectlyMapped() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)