È impossibile. Ho passato un po 'di tempo oggi analizzando il codice di Spring Boot per cercare di trovare una soluzione a questo. Non c'è nulla nell'impostazione di nessuna di queste proprietà in FlywayAutoConfiguration. Inoltre ho scoperto che Spring non chiama mai il metodo configure sull'oggetto Flyway quale sarebbe l'unica altra opzione per il funzionamento di flyway.properties. Spring sta abusando un po 'di flyway.properties e invece di fornire questo file oltre a Flyway, lo usano come fonte di proprietà. Questo è il motivo per cui l'insieme di opzioni possibili quando si utilizza FlywayAutoConfiguration è così limitato. Quindi, usare FlywayAutoConfiguration non è una buona opzione se hai bisogno di altre funzionalità avanzate di Flyway. Ma usare @Bean non è una tragedia qui. Qui di seguito è possibile visualizzare un esempio di utilizzo di @Bean in questo modo che l'implementazione di questo comportamento sarebbe impossibile con qualsiasi file di proprietà:
@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;
}
Come potete vedere ho due profili sorgente qui. Un valore predefinito che non pulirà il database e uno con la pulizia completa del database. Molto maneggevole.
Grazie @goroncy per la conferma il mio sospetto. – dropofahat