亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring-boot:在不啟動應用程序的情況下運行flyway遷移

Spring-boot:在不啟動應用程序的情況下運行flyway遷移

largeQ 2024-01-05 10:03:44
我們有一個 Spring Boot 服務,可以進行 Flyway 遷移,并且一切正?!,F在,對于新的部署用例,問題是是否有一個 java 選項(參數或類似的東西)來僅啟動 Flyway 遷移而不啟動實際服務。
查看完整描述

3 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

這對我來說很有用;


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);

  }

}

中等鏈接


查看完整回答
反對 回復 2024-01-05
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

基本上,我自己通過利用 Flyway 回調來實現它,并在遷移成功完成后簡單地關閉應用程序。整個過程由一個單獨的配置參數控制。


這是回調


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) {

  }

}

這里我們有配置參數


@Data

@Validated

@ConfigurationProperties(prefix = "spring.flyway")

public class FlywayCustomProperties {


  @NotNull

  private boolean migrationOnly;

}


查看完整回答
反對 回復 2024-01-05
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

是的,您可以使用 Flyway cli 來運行遷移,而無需啟動服務: https ://flywaydb.org/documentation/commandline/


查看完整回答
反對 回復 2024-01-05
  • 3 回答
  • 0 關注
  • 275 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號