У меня очень простое приложение Spring Boot, которое использует Flyway для миграции баз данных.Я хочу установить заполнители Flyway программно с помощью класса конфигурации Spring до начала миграции.
Что я делаю:
@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}
.Миграция завершается с ошибкой:
No value provided for placeholder expressions: ${tablespace_data}
Я полагаю, миграция начинается до обработки файла конфигурации.Как это исправить?Я не хочу использовать application.properties для установки заполнителей пролетного пути, но все другие свойства, такие как spring.flyway.user
, spring.flyway.password
и т. Д., Должны быть установлены application.properties.