springboot 使用 flyway 进行数据库版本管理
< 返回列表时间: 2019-03-26来源:OSCHINA
要在启动时自动运行Flyway数据库迁移,请将其添加 org.flywaydb:flyway-core 到类路径中。
迁移是表单中的脚本 V<VERSION>__<NAME>.sql (使用 <VERSION> 下划线分隔的版本,例如“1”或“2_1”)。默认情况下,它们位于名为的文件夹中 classpath:db/migration ,但您可以通过设置修改该位置 spring.flyway.locations 。这是一个或多个 classpath: 或 filesystem: 位置的逗号分隔列表。例如,以下配置将在默认类路径位置和 /opt/migration 目录中搜索脚本: spring.flyway.locations = classpath:db / migration,filesystem:/ opt / migration
您还可以添加特殊 {vendor} 占位符以使用特定于供应商的脚本。假设如下: spring.flyway.locations = classpath:db / migration / {vendor}
db/migration 前面的配置不是使用,而是根据数据库的类型(例如 db/migration/mysql MySQL)设置要使用的文件夹。支持的数据库列表可在以下位置找到 DatabaseDriver 。
FlywayProperties 提供了大部分Flyway的设置和一小组附加属性,可用于禁用迁移或关闭位置检查。如果您需要更多控制配置,请考虑注册 FlywayConfigurationCustomizer bean。
Spring Boot调用 Flyway.migrate() 以执行数据库迁移。如果您想要更多控制权,请提供 @Bean 实施方案 FlywayMigrationStrategy 。
Flyway支持SQL和Java 回调 。要使用基于SQL的回调,请将回调脚本放在该 classpath:db/migration 文件夹中。要使用基于Java的回调,请创建一个或多个实现的bean Callback 。任何此类bean都会自动注册 Flyway 。它们可以通过使用 @Order 或实施来订购 Ordered 。 FlywayCallback 也可以检测实现已弃用接口的Bean ,但它们不能与 Callback bean 一起使用。
默认情况下,Flyway会在您的上下文中自动装配( @Primary ) DataSource 并将其用于迁移。如果您想使用其他的 DataSource ,可以创建一个并将其标记 @Bean 为 @FlywayDataSource 。如果您这样做并想要两个数据源,请记住创建另一个数据源并将其标记为 @Primary 。或者,您可以 DataSource 通过设置 spring.flyway.[url,user,password] 外部属性来使用Flyway的原生。设置任何一个 spring.flyway.url 或 spring.flyway.user 足以使Flyway使用它自己的 DataSource 。如果未设置三个属性中的任何一个, spring.datasource 则将使用其等效属性的值。
有一个 Flyway示例 ,您可以看到如何设置。
您还可以使用Flyway为特定方案提供数据。例如,您可以放置​​特定于测试的迁移, src/test/resources 并且仅在应用程序启动测试时才运行它们。此外,您可以使用特定于配置文件的配置进行自定义, spring.flyway.locations 以便某些迁移仅在特定配置文件处于活动状态时运行。例如,在中 application-dev.properties ,您可以指定以下设置: spring.flyway.locations = classpath:/ db / migration,classpath:/ dev / db / migration
使用该设置, dev/db/migration 仅在 dev 配置文件处于活动状态时才会运行迁移。
热门排行