首页 > 解决方案 > Spring boot - 如何禁用每个数据源的 Flyway

问题描述

需要有关 Spring/Flyway 配置的帮助。Spring Boot Kotlin 应用程序有 2 个数据源:

    @Primary
    @Bean("dataSource")
    fun dataSource(): DataSource {
        return DataSourceBuilder
            .create()
            .build()
    }

    @Bean("legacyDataSource")
    fun legacyDataSource(): DataSource {
        val dataSource = OracleDataSource()
        // todo: configure

        return dataSource
    }

我只想将 Flyway 用于dataSource, 不用于legacyDataSource。通常 Flyway 应该flywayInitializer只为主 bean 注入,但有时它也可以应用legacyDataSource(例如,当当前配置文件中禁用 dataSource 时)。Flyway 是否可以选择为每个数据源 bean 禁用它?输入键的提示application.properties会非常好;)

标签: spring-bootflyway

解决方案


文档

您可以通过在外部属性中设置 spring.flyway.[url,user,password] 来使用 Flyway 的原生 DataSource。设置 spring.flyway.url 或 spring.flyway.user 足以使 Flyway 使用自己的 DataSource。如果没有设置三个属性中的任何一个,则将使用其等效 spring.datasource 属性的值。

因此,您应该在 yaml 中填写上述三个属性,因此只会迁移指定的数据源。


推荐阅读