Flyway установка программных заполнителей - PullRequest
0 голосов
/ 11 сентября 2018

У меня очень простое приложение 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.

...