2019独角兽企业重金招聘Python工程师标准>>>
要在启动时自动运行Flyway数据库迁移,请将其添加 org.flywaydb:flyway-core
到类路径中。
迁移是表单中的脚本V
(使用
下划线分隔的版本,例如“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
配置文件处于活动状态时才会运行迁移。