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
ff682959
Commit
ff682959
authored
Mar 15, 2019
by
Semyon Danilov
Committed by
Andy Wilkinson
Aug 30, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Auto-configure Flyway with JavaMigration beans
See gh-17993
parent
82ea3b51
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
1 deletion
+90
-1
FlywayAutoConfiguration.java
...rk/boot/autoconfigure/flyway/FlywayAutoConfiguration.java
+4
-1
FlywayAutoConfigurationTests.java
...ot/autoconfigure/flyway/FlywayAutoConfigurationTests.java
+86
-0
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java
View file @
ff682959
...
@@ -31,6 +31,7 @@ import org.flywaydb.core.Flyway;
...
@@ -31,6 +31,7 @@ import org.flywaydb.core.Flyway;
import
org.flywaydb.core.api.MigrationVersion
;
import
org.flywaydb.core.api.MigrationVersion
;
import
org.flywaydb.core.api.callback.Callback
;
import
org.flywaydb.core.api.callback.Callback
;
import
org.flywaydb.core.api.configuration.FluentConfiguration
;
import
org.flywaydb.core.api.configuration.FluentConfiguration
;
import
org.flywaydb.core.api.migration.JavaMigration
;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
...
@@ -112,7 +113,7 @@ public class FlywayAutoConfiguration {
...
@@ -112,7 +113,7 @@ public class FlywayAutoConfiguration {
ResourceLoader
resourceLoader
,
ObjectProvider
<
DataSource
>
dataSource
,
ResourceLoader
resourceLoader
,
ObjectProvider
<
DataSource
>
dataSource
,
@FlywayDataSource
ObjectProvider
<
DataSource
>
flywayDataSource
,
@FlywayDataSource
ObjectProvider
<
DataSource
>
flywayDataSource
,
ObjectProvider
<
FlywayConfigurationCustomizer
>
fluentConfigurationCustomizers
,
ObjectProvider
<
FlywayConfigurationCustomizer
>
fluentConfigurationCustomizers
,
ObjectProvider
<
Callback
>
callbacks
)
{
ObjectProvider
<
JavaMigration
>
javaMigrations
,
ObjectProvider
<
Callback
>
callbacks
)
{
FluentConfiguration
configuration
=
new
FluentConfiguration
(
resourceLoader
.
getClassLoader
());
FluentConfiguration
configuration
=
new
FluentConfiguration
(
resourceLoader
.
getClassLoader
());
DataSource
dataSourceToMigrate
=
configureDataSource
(
configuration
,
properties
,
dataSourceProperties
,
DataSource
dataSourceToMigrate
=
configureDataSource
(
configuration
,
properties
,
dataSourceProperties
,
flywayDataSource
.
getIfAvailable
(),
dataSource
.
getIfAvailable
());
flywayDataSource
.
getIfAvailable
(),
dataSource
.
getIfAvailable
());
...
@@ -122,6 +123,8 @@ public class FlywayAutoConfiguration {
...
@@ -122,6 +123,8 @@ public class FlywayAutoConfiguration {
configureCallbacks
(
configuration
,
orderedCallbacks
);
configureCallbacks
(
configuration
,
orderedCallbacks
);
fluentConfigurationCustomizers
.
orderedStream
().
forEach
((
customizer
)
->
customizer
.
customize
(
configuration
));
fluentConfigurationCustomizers
.
orderedStream
().
forEach
((
customizer
)
->
customizer
.
customize
(
configuration
));
configureFlywayCallbacks
(
configuration
,
orderedCallbacks
);
configureFlywayCallbacks
(
configuration
,
orderedCallbacks
);
JavaMigration
[]
migrations
=
javaMigrations
.
stream
().
toArray
(
JavaMigration
[]::
new
);
configuration
.
javaMigrations
(
migrations
);
return
configuration
.
load
();
return
configuration
.
load
();
}
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java
View file @
ff682959
...
@@ -29,6 +29,7 @@ import org.flywaydb.core.api.MigrationVersion;
...
@@ -29,6 +29,7 @@ import org.flywaydb.core.api.MigrationVersion;
import
org.flywaydb.core.api.callback.Callback
;
import
org.flywaydb.core.api.callback.Callback
;
import
org.flywaydb.core.api.callback.Context
;
import
org.flywaydb.core.api.callback.Context
;
import
org.flywaydb.core.api.callback.Event
;
import
org.flywaydb.core.api.callback.Event
;
import
org.flywaydb.core.api.migration.JavaMigration
;
import
org.flywaydb.core.internal.license.FlywayProUpgradeRequiredException
;
import
org.flywaydb.core.internal.license.FlywayProUpgradeRequiredException
;
import
org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform
;
import
org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.Test
;
...
@@ -264,6 +265,16 @@ class FlywayAutoConfigurationTests {
...
@@ -264,6 +265,16 @@ class FlywayAutoConfigurationTests {
});
});
}
}
@Test
void
flywayJavaMigrations
()
{
this
.
contextRunner
.
withUserConfiguration
(
EmbeddedDataSourceConfiguration
.
class
,
FlywayJavaMigrationsConfiguration
.
class
)
.
run
((
context
)
->
{
Flyway
flyway
=
context
.
getBean
(
Flyway
.
class
);
assertThat
(
flyway
.
getConfiguration
().
getJavaMigrations
().
length
).
isEqualTo
(
2
);
});
}
@Test
@Test
void
customFlywayMigrationInitializer
()
{
void
customFlywayMigrationInitializer
()
{
this
.
contextRunner
this
.
contextRunner
...
@@ -471,6 +482,81 @@ class FlywayAutoConfigurationTests {
...
@@ -471,6 +482,81 @@ class FlywayAutoConfigurationTests {
}
}
@Configuration
protected
static
class
FlywayJavaMigrationsConfiguration
{
@Component
private
static
class
Migration1
implements
JavaMigration
{
@Override
public
MigrationVersion
getVersion
()
{
return
MigrationVersion
.
fromVersion
(
"2"
);
}
@Override
public
String
getDescription
()
{
return
"M1"
;
}
@Override
public
Integer
getChecksum
()
{
return
1
;
}
@Override
public
boolean
isUndo
()
{
return
false
;
}
@Override
public
boolean
canExecuteInTransaction
()
{
return
true
;
}
@Override
public
void
migrate
(
org
.
flywaydb
.
core
.
api
.
migration
.
Context
context
)
throws
Exception
{
}
}
@Component
private
static
class
Migration2
implements
JavaMigration
{
@Override
public
MigrationVersion
getVersion
()
{
return
MigrationVersion
.
fromVersion
(
"3"
);
}
@Override
public
String
getDescription
()
{
return
"M2"
;
}
@Override
public
Integer
getChecksum
()
{
return
2
;
}
@Override
public
boolean
isUndo
()
{
return
false
;
}
@Override
public
boolean
canExecuteInTransaction
()
{
return
false
;
}
@Override
public
void
migrate
(
org
.
flywaydb
.
core
.
api
.
migration
.
Context
context
)
throws
Exception
{
}
}
}
@Configuration
(
proxyBeanMethods
=
false
)
@Configuration
(
proxyBeanMethods
=
false
)
static
class
ResourceLoaderConfiguration
{
static
class
ResourceLoaderConfiguration
{
...
...
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