Jest to niemożliwe. Spędziłem dzisiaj trochę czasu analizując kod Spring Boot, aby spróbować znaleźć rozwiązanie tego problemu. Nie ma nic o ustawianiu żadnej z tych właściwości w FlywayAutoConfiguration. Odkryłem również, że Spring nigdy nie wywołuje metody configure w obiekcie Flyway, co byłoby jedyną opcją do działania flyway.properties. Spring nieco nadużywa flyway.properties i zamiast dostarczać ten plik dalej do Flywaya, używa go jako źródła właściwości. Dlatego zestaw możliwych opcji podczas korzystania z FlywayAutoConfiguration jest tak ograniczony. Używanie FlywayAutoConfiguration nie jest dobrą opcją, jeśli potrzebujesz bardziej zaawansowanych funkcji Flywaya. Ale używanie @Bean nie jest tutaj tragedią. Poniżej można zobaczyć przykład użycia @Bean w ten sposób, że wdrożenie tego problemu byłoby niemożliwe z dowolnych plików własności:
@Profile(value = "!dbClean")
@Bean(name = "flyway", initMethod = "migrate")
public Flyway flywayNotADestroyer() {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource());
flyway.setBaselineOnMigrate(true);
return flyway;
}
@Profile(value = "dbClean")
@Bean(name = "flyway", initMethod = "migrate")
public Flyway flywayTheDestroyer() {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource());
flyway.setBaselineOnMigrate(true);
flyway.clean();
return flyway;
}
Jak widać mam dwa profile sprężyna. Jedna wartość domyślna, która nie spowoduje wyczyszczenia bazy danych i jedna z pełną czystością bazy danych. Bardzo przydatny.
Dzięki @goroncy dla potwierdzający moje podejrzenia. – dropofahat