3 回答
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
這對(duì)我來(lái)說(shuō)很有用;
import static org.springframework.boot.WebApplicationType.NONE;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.Import;
/**
* Utility to run flyway migration without starting service
*/
@SpringBootConfiguration
@Import({DataSourceAutoConfiguration.class, FlywayAutoConfiguration.class})
public class FlywayMigrationRunner {
public static void main(String[] args) {
SpringApplication application =
new SpringApplicationBuilder(FlywayMigrationRunner.class)
.web(NONE).build();
application.run(args);
}
}
TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
基本上,我自己通過(guò)利用 Flyway 回調(diào)來(lái)實(shí)現(xiàn)它,并在遷移成功完成后簡(jiǎn)單地關(guān)閉應(yīng)用程序。整個(gè)過(guò)程由一個(gè)單獨(dú)的配置參數(shù)控制。
這是回調(diào)
public class PostMigrationCallback implements Callback {
private final FlywayCustomProperties flywayCustomProperties;
private final ApplicationContext applicationContext;
public PostMigrationCallback(FlywayCustomProperties flywayCustomProperties, ApplicationContext applicationContext) {
this.flywayCustomProperties = flywayCustomProperties;
this.applicationContext = applicationContext;
}
@Override
public boolean supports(Event event, Context context) {
if (event.getId().equalsIgnoreCase("afterMigrate") && flywayCustomProperties.isMigrationOnly()) {
log.info("Service is going to shutdown as configuration was set to spring.flyway.migrate-only=true and schema was migrated successfully");
int exitCode = SpringApplication.exit(applicationContext, () -> 0);
System.exit(exitCode);
}
return false;
}
@Override
public boolean canHandleInTransaction(Event event, Context context) {
return false;
}
@Override
public void handle(Event event, Context context) {
}
}
這里我們有配置參數(shù)
@Data
@Validated
@ConfigurationProperties(prefix = "spring.flyway")
public class FlywayCustomProperties {
@NotNull
private boolean migrationOnly;
}
TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
是的,您可以使用 Flyway cli 來(lái)運(yùn)行遷移,而無(wú)需啟動(dòng)服務(wù): https ://flywaydb.org/documentation/commandline/
添加回答
舉報(bào)
