Skip to content

Commit 78941c3

Browse files
committed
Polish "Ensure that Flyway/Liquibase run before jOOQ's DSLContext is used"
See gh-25279
1 parent c55200d commit 78941c3

File tree

3 files changed

+44
-43
lines changed

3 files changed

+44
-43
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,8 @@ private String getProperty(Supplier<String> property, Supplier<String> defaultVa
167167
}
168168

169169
/**
170-
* Post processor to ensure that {@link EntityManagerFactory} beans depend on the
171-
* liquibase bean.
170+
* Post processor to ensure that {@link EntityManagerFactory} beans depend on any
171+
* {@link SpringLiquibase} beans.
172172
*/
173173
@ConditionalOnClass(LocalContainerEntityManagerFactoryBean.class)
174174
@ConditionalOnBean(AbstractEntityManagerFactoryBean.class)
@@ -182,8 +182,8 @@ static class LiquibaseEntityManagerFactoryDependsOnPostProcessor
182182
}
183183

184184
/**
185-
* Additional configuration to ensure that {@link JdbcOperations} beans depend on the
186-
* liquibase bean.
185+
* Additional configuration to ensure that {@link JdbcOperations} beans depend on any
186+
* {@link SpringLiquibase} beans.
187187
*/
188188
@ConditionalOnClass(JdbcOperations.class)
189189
@ConditionalOnBean(JdbcOperations.class)
@@ -197,7 +197,7 @@ static class LiquibaseJdbcOperationsDependsOnPostProcessor extends JdbcOperation
197197

198198
/**
199199
* Post processor to ensure that {@link NamedParameterJdbcOperations} beans depend on
200-
* the liquibase bean.
200+
* any {@link SpringLiquibase} beans.
201201
*/
202202
@ConditionalOnClass(NamedParameterJdbcOperations.class)
203203
@ConditionalOnBean(NamedParameterJdbcOperations.class)
@@ -211,8 +211,8 @@ static class LiquibaseNamedParameterJdbcOperationsDependsOnPostProcessor
211211
}
212212

213213
/**
214-
* Post processor to ensure that {@link DSLContext} beans depend on the liquibase
215-
* bean.
214+
* Post processor to ensure that {@link DSLContext} beans depend on any
215+
* {@link SpringLiquibase} beans.
216216
*/
217217
@ConditionalOnClass(DSLContext.class)
218218
@ConditionalOnBean(DSLContext.class)

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java

Lines changed: 27 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -525,24 +525,32 @@ void initSqlsWithFlywayUrl() {
525525
}
526526

527527
@Test
528-
void userConfigurationDslContextDependency() {
529-
this.contextRunner
530-
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, CustomFlywayWithJooqConfiguration.class)
528+
void whenFlywayIsAutoConfiguredThenJooqDslContextDependsOnFlywayBeans() {
529+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class)
531530
.run((context) -> {
532531
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
533-
assertThat(beanDefinition.getDependsOn()).containsExactly("flyway");
532+
assertThat(beanDefinition.getDependsOn()).containsExactly("flywayInitializer", "flyway");
534533
});
535534
}
536535

537536
@Test
538-
void userConfigurationWithFlywayMigrationAndDslContextDependency() {
539-
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class,
540-
CustomFlywayMigrationInitializerWithJooqConfiguration.class).run((context) -> {
537+
void whenCustomMigrationInitializerIsDefinedThenJooqDslContextDependsOnIt() {
538+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class,
539+
CustomFlywayMigrationInitializer.class).run((context) -> {
541540
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
542541
assertThat(beanDefinition.getDependsOn()).containsExactly("flywayMigrationInitializer", "flyway");
543542
});
544543
}
545544

545+
@Test
546+
void whenCustomFlywayIsDefinedThenJooqDslContextDependsOnIt() {
547+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class,
548+
CustomFlyway.class).run((context) -> {
549+
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
550+
assertThat(beanDefinition.getDependsOn()).containsExactly("customFlyway");
551+
});
552+
}
553+
546554
@Configuration(proxyBeanMethods = false)
547555
static class FlywayDataSourceConfiguration {
548556

@@ -619,6 +627,16 @@ FlywayMigrationInitializer flywayMigrationInitializer(Flyway flyway) {
619627

620628
}
621629

630+
@Configuration(proxyBeanMethods = false)
631+
static class CustomFlyway {
632+
633+
@Bean
634+
Flyway customFlyway() {
635+
return Flyway.configure().load();
636+
}
637+
638+
}
639+
622640
@Configuration(proxyBeanMethods = false)
623641
static class CustomFlywayMigrationInitializerWithJpaConfiguration {
624642

@@ -771,34 +789,8 @@ FlywayConfigurationCustomizer customizerTwo() {
771789

772790
}
773791

774-
@Configuration
775-
static class CustomFlywayWithJooqConfiguration {
776-
777-
@Bean
778-
Flyway flyway(DataSource dataSource) {
779-
return Flyway.configure().dataSource(dataSource).load();
780-
}
781-
782-
@Bean
783-
DSLContext dslContext() {
784-
return new DefaultDSLContext(SQLDialect.H2);
785-
}
786-
787-
}
788-
789-
@Configuration
790-
protected static class CustomFlywayMigrationInitializerWithJooqConfiguration {
791-
792-
private final DataSource dataSource;
793-
794-
protected CustomFlywayMigrationInitializerWithJooqConfiguration(DataSource dataSource) {
795-
this.dataSource = dataSource;
796-
}
797-
798-
@Bean
799-
public FlywayMigrationInitializer flywayMigrationInitializer(Flyway flyway) {
800-
return new FlywayMigrationInitializer(flyway);
801-
}
792+
@Configuration(proxyBeanMethods = false)
793+
static class JooqConfiguration {
802794

803795
@Bean
804796
DSLContext dslContext() {

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,16 @@ void overrideTag() {
376376
}
377377

378378
@Test
379-
void userConfigurationDslContextDependency() {
379+
void whenLiquibaseIsAutoConfiguredThenJooqDslContextDependsOnSpringLiquibaseBeans() {
380+
this.contextRunner.withConfiguration(AutoConfigurations.of(JooqAutoConfiguration.class))
381+
.withUserConfiguration(EmbeddedDataSourceConfiguration.class).run((context) -> {
382+
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
383+
assertThat(beanDefinition.getDependsOn()).containsExactly("liquibase");
384+
});
385+
}
386+
387+
@Test
388+
void whenCustomSpringLiquibaseIsDefinedThenJooqDslContextDependsOnSpringLiquibaseBeans() {
380389
this.contextRunner.withConfiguration(AutoConfigurations.of(JooqAutoConfiguration.class))
381390
.withUserConfiguration(LiquibaseUserConfiguration.class, EmbeddedDataSourceConfiguration.class)
382391
.run((context) -> {

0 commit comments

Comments
 (0)