gpt4 book ai didi

spring - Flyway 以编程方式设置占位符

转载 作者:行者123 更新时间:2023-12-03 21:19:40 36 4
gpt4 key购买 nike

我有一个非常简单的 Spring Boot 应用程序,它使用 Flyway 进行数据库迁移。我想在迁移开始之前使用 Spring 配置类以编程方式设置 Flyway 占位符。

我要做的是:

@Configuration
public class FlywayConfiguration {

@Autowired
private Flyway flyway;

@Value("${threedsserver.db.tableSpaces.data:pg_default}")
private String tablespaceData;

@Value("${threedsserver.db.tableSpaces.index:pg_default}")
private String tablespaceIndex;

@Value("${threedsserver.db.tableSpaces.lob:pg_default}")
private String tablespaceLob;

@PostConstruct
void setFlywayPlaceholders() {
Map<String, String> placeholders = flyway.getPlaceholders();
placeholders.put("tablespace_data", tablespaceData);
placeholders.put("tablespace_index", tablespaceIndex);
placeholders.put("tablespace_lob", tablespaceLob);
flyway.setPlaceholders(placeholders);
}
}

然后在我的迁移脚本中使用 ${tablespace_data}属性(property)。迁移失败:
No value provided for placeholder expressions: ${tablespace_data}

我想迁移在处理配置文件之前开始。
如何解决这个问题?我不想使用 application.properties 来设置 flyway 占位符,但所有其他属性,如 spring.flyway.user , spring.flyway.password等希望由 application.properties 设置。

最佳答案

您可以使用 FlywayConfigurationCustomizer像这样 :

import org.flywaydb.core.api.configuration.FluentConfiguration
import org.springframework.boot.autoconfigure.flyway.FlywayConfigurationCustomizer
import org.springframework.context.annotation.Configuration

@Configuration
class CustomFlywayConfiguration : FlywayConfigurationCustomizer {
override fun customize(configuration: FluentConfiguration?) {
configuration?.placeholders?.put("tablespace_index", "some_value")
}
}

我有用于 Spring Boot Flyway 集成的样本 here

关于spring - Flyway 以编程方式设置占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52272078/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com