springboot 使用 flyway 进行数据库版本管理

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

要在启动时自动运行Flyway数据库迁移,请将其添加 org.flywaydb:flyway-core到类路径中。

迁移是表单中的脚本V__.sql(使用下划线分隔的版本,例如“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/mysqlMySQL)设置要使用的文件夹。支持的数据库列表可在以下位置找到DatabaseDriver

FlywayProperties 提供了大部分Flyway的设置和一小组附加属性,可用于禁用迁移或关闭位置检查。如果您需要更多控制配置,请考虑注册FlywayConfigurationCustomizer bean。

Spring Boot调用Flyway.migrate()以执行数据库迁移。如果您想要更多控制权,请提供@Bean实施方案 FlywayMigrationStrategy

Flyway支持SQL和Java 回调。要使用基于SQL的回调,请将回调脚本放在该classpath:db/migration 文件夹中。要使用基于Java的回调,请创建一个或多个实现的bean Callback。任何此类bean都会自动注册Flyway。它们可以通过使用@Order或实施来订购OrderedFlywayCallback也可以检测实现已弃用接口的Bean ,但它们不能与Callbackbean 一起使用。

默认情况下,Flyway会在您的上下文中自动装配(@PrimaryDataSource并将其用于迁移。如果您想使用其他的DataSource,可以创建一个并将其标记@Bean@FlywayDataSource。如果您这样做并想要两个数据源,请记住创建另一个数据源并将其标记为@Primary。或者,您可以DataSource通过设置spring.flyway.[url,user,password] 外部属性来使用Flyway的原生。设置任何一个spring.flyway.urlspring.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配置文件处于活动状态时才会运行迁移。

转载于:https://my.oschina.net/10000000000/blog/3028266

你可能感兴趣的:(springboot 使用 flyway 进行数据库版本管理)