Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
78941c32
Commit
78941c32
authored
Feb 16, 2021
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Ensure that Flyway/Liquibase run before jOOQ's DSLContext is used"
See gh-25279
parent
c55200d1
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
43 deletions
+44
-43
LiquibaseAutoConfiguration.java
...t/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
+7
-7
FlywayAutoConfigurationTests.java
...ot/autoconfigure/flyway/FlywayAutoConfigurationTests.java
+27
-35
LiquibaseAutoConfigurationTests.java
...oconfigure/liquibase/LiquibaseAutoConfigurationTests.java
+10
-1
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
View file @
78941c32
...
@@ -167,8 +167,8 @@ public class LiquibaseAutoConfiguration {
...
@@ -167,8 +167,8 @@ public class LiquibaseAutoConfiguration {
}
}
/**
/**
* Post processor to ensure that {@link EntityManagerFactory} beans depend on
the
* Post processor to ensure that {@link EntityManagerFactory} beans depend on
any
*
liquibase bean
.
*
{@link SpringLiquibase} beans
.
*/
*/
@ConditionalOnClass
(
LocalContainerEntityManagerFactoryBean
.
class
)
@ConditionalOnClass
(
LocalContainerEntityManagerFactoryBean
.
class
)
@ConditionalOnBean
(
AbstractEntityManagerFactoryBean
.
class
)
@ConditionalOnBean
(
AbstractEntityManagerFactoryBean
.
class
)
...
@@ -182,8 +182,8 @@ public class LiquibaseAutoConfiguration {
...
@@ -182,8 +182,8 @@ public class LiquibaseAutoConfiguration {
}
}
/**
/**
* Additional configuration to ensure that {@link JdbcOperations} beans depend on
the
* Additional configuration to ensure that {@link JdbcOperations} beans depend on
any
*
liquibase bean
.
*
{@link SpringLiquibase} beans
.
*/
*/
@ConditionalOnClass
(
JdbcOperations
.
class
)
@ConditionalOnClass
(
JdbcOperations
.
class
)
@ConditionalOnBean
(
JdbcOperations
.
class
)
@ConditionalOnBean
(
JdbcOperations
.
class
)
...
@@ -197,7 +197,7 @@ public class LiquibaseAutoConfiguration {
...
@@ -197,7 +197,7 @@ public class LiquibaseAutoConfiguration {
/**
/**
* Post processor to ensure that {@link NamedParameterJdbcOperations} beans depend on
* Post processor to ensure that {@link NamedParameterJdbcOperations} beans depend on
*
the liquibase bean
.
*
any {@link SpringLiquibase} beans
.
*/
*/
@ConditionalOnClass
(
NamedParameterJdbcOperations
.
class
)
@ConditionalOnClass
(
NamedParameterJdbcOperations
.
class
)
@ConditionalOnBean
(
NamedParameterJdbcOperations
.
class
)
@ConditionalOnBean
(
NamedParameterJdbcOperations
.
class
)
...
@@ -211,8 +211,8 @@ public class LiquibaseAutoConfiguration {
...
@@ -211,8 +211,8 @@ public class LiquibaseAutoConfiguration {
}
}
/**
/**
* Post processor to ensure that {@link DSLContext} beans depend on
the liquibase
* Post processor to ensure that {@link DSLContext} beans depend on
any
*
bean
.
*
{@link SpringLiquibase} beans
.
*/
*/
@ConditionalOnClass
(
DSLContext
.
class
)
@ConditionalOnClass
(
DSLContext
.
class
)
@ConditionalOnBean
(
DSLContext
.
class
)
@ConditionalOnBean
(
DSLContext
.
class
)
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java
View file @
78941c32
...
@@ -525,24 +525,32 @@ class FlywayAutoConfigurationTests {
...
@@ -525,24 +525,32 @@ class FlywayAutoConfigurationTests {
}
}
@Test
@Test
void
userConfigurationDslContextDependency
()
{
void
whenFlywayIsAutoConfiguredThenJooqDslContextDependsOnFlywayBeans
()
{
this
.
contextRunner
this
.
contextRunner
.
withUserConfiguration
(
EmbeddedDataSourceConfiguration
.
class
,
JooqConfiguration
.
class
)
.
withUserConfiguration
(
EmbeddedDataSourceConfiguration
.
class
,
CustomFlywayWithJooqConfiguration
.
class
)
.
run
((
context
)
->
{
.
run
((
context
)
->
{
BeanDefinition
beanDefinition
=
context
.
getBeanFactory
().
getBeanDefinition
(
"dslContext"
);
BeanDefinition
beanDefinition
=
context
.
getBeanFactory
().
getBeanDefinition
(
"dslContext"
);
assertThat
(
beanDefinition
.
getDependsOn
()).
containsExactly
(
"flyway"
);
assertThat
(
beanDefinition
.
getDependsOn
()).
containsExactly
(
"flyway
Initializer"
,
"flyway
"
);
});
});
}
}
@Test
@Test
void
userConfigurationWithFlywayMigrationAndDslContextDependency
()
{
void
whenCustomMigrationInitializerIsDefinedThenJooqDslContextDependsOnIt
()
{
this
.
contextRunner
.
withUserConfiguration
(
EmbeddedDataSourceConfiguration
.
class
,
this
.
contextRunner
.
withUserConfiguration
(
EmbeddedDataSourceConfiguration
.
class
,
JooqConfiguration
.
class
,
CustomFlywayMigrationInitializer
WithJooqConfiguration
.
class
).
run
((
context
)
->
{
CustomFlywayMigrationInitializer
.
class
).
run
((
context
)
->
{
BeanDefinition
beanDefinition
=
context
.
getBeanFactory
().
getBeanDefinition
(
"dslContext"
);
BeanDefinition
beanDefinition
=
context
.
getBeanFactory
().
getBeanDefinition
(
"dslContext"
);
assertThat
(
beanDefinition
.
getDependsOn
()).
containsExactly
(
"flywayMigrationInitializer"
,
"flyway"
);
assertThat
(
beanDefinition
.
getDependsOn
()).
containsExactly
(
"flywayMigrationInitializer"
,
"flyway"
);
});
});
}
}
@Test
void
whenCustomFlywayIsDefinedThenJooqDslContextDependsOnIt
()
{
this
.
contextRunner
.
withUserConfiguration
(
EmbeddedDataSourceConfiguration
.
class
,
JooqConfiguration
.
class
,
CustomFlyway
.
class
).
run
((
context
)
->
{
BeanDefinition
beanDefinition
=
context
.
getBeanFactory
().
getBeanDefinition
(
"dslContext"
);
assertThat
(
beanDefinition
.
getDependsOn
()).
containsExactly
(
"customFlyway"
);
});
}
@Configuration
(
proxyBeanMethods
=
false
)
@Configuration
(
proxyBeanMethods
=
false
)
static
class
FlywayDataSourceConfiguration
{
static
class
FlywayDataSourceConfiguration
{
...
@@ -619,6 +627,16 @@ class FlywayAutoConfigurationTests {
...
@@ -619,6 +627,16 @@ class FlywayAutoConfigurationTests {
}
}
@Configuration
(
proxyBeanMethods
=
false
)
static
class
CustomFlyway
{
@Bean
Flyway
customFlyway
()
{
return
Flyway
.
configure
().
load
();
}
}
@Configuration
(
proxyBeanMethods
=
false
)
@Configuration
(
proxyBeanMethods
=
false
)
static
class
CustomFlywayMigrationInitializerWithJpaConfiguration
{
static
class
CustomFlywayMigrationInitializerWithJpaConfiguration
{
...
@@ -771,34 +789,8 @@ class FlywayAutoConfigurationTests {
...
@@ -771,34 +789,8 @@ class FlywayAutoConfigurationTests {
}
}
@Configuration
@Configuration
(
proxyBeanMethods
=
false
)
static
class
CustomFlywayWithJooqConfiguration
{
static
class
JooqConfiguration
{
@Bean
Flyway
flyway
(
DataSource
dataSource
)
{
return
Flyway
.
configure
().
dataSource
(
dataSource
).
load
();
}
@Bean
DSLContext
dslContext
()
{
return
new
DefaultDSLContext
(
SQLDialect
.
H2
);
}
}
@Configuration
protected
static
class
CustomFlywayMigrationInitializerWithJooqConfiguration
{
private
final
DataSource
dataSource
;
protected
CustomFlywayMigrationInitializerWithJooqConfiguration
(
DataSource
dataSource
)
{
this
.
dataSource
=
dataSource
;
}
@Bean
public
FlywayMigrationInitializer
flywayMigrationInitializer
(
Flyway
flyway
)
{
return
new
FlywayMigrationInitializer
(
flyway
);
}
@Bean
@Bean
DSLContext
dslContext
()
{
DSLContext
dslContext
()
{
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java
View file @
78941c32
...
@@ -376,7 +376,16 @@ class LiquibaseAutoConfigurationTests {
...
@@ -376,7 +376,16 @@ class LiquibaseAutoConfigurationTests {
}
}
@Test
@Test
void
userConfigurationDslContextDependency
()
{
void
whenLiquibaseIsAutoConfiguredThenJooqDslContextDependsOnSpringLiquibaseBeans
()
{
this
.
contextRunner
.
withConfiguration
(
AutoConfigurations
.
of
(
JooqAutoConfiguration
.
class
))
.
withUserConfiguration
(
EmbeddedDataSourceConfiguration
.
class
).
run
((
context
)
->
{
BeanDefinition
beanDefinition
=
context
.
getBeanFactory
().
getBeanDefinition
(
"dslContext"
);
assertThat
(
beanDefinition
.
getDependsOn
()).
containsExactly
(
"liquibase"
);
});
}
@Test
void
whenCustomSpringLiquibaseIsDefinedThenJooqDslContextDependsOnSpringLiquibaseBeans
()
{
this
.
contextRunner
.
withConfiguration
(
AutoConfigurations
.
of
(
JooqAutoConfiguration
.
class
))
this
.
contextRunner
.
withConfiguration
(
AutoConfigurations
.
of
(
JooqAutoConfiguration
.
class
))
.
withUserConfiguration
(
LiquibaseUserConfiguration
.
class
,
EmbeddedDataSourceConfiguration
.
class
)
.
withUserConfiguration
(
LiquibaseUserConfiguration
.
class
,
EmbeddedDataSourceConfiguration
.
class
)
.
run
((
context
)
->
{
.
run
((
context
)
->
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment