programing

플라이웨이를 실행하는 방법: SpringBoot 앱에서 마이그레이션 전 청소?

padding 2023. 6. 27. 21:51
반응형

플라이웨이를 실행하는 방법: SpringBoot 앱에서 마이그레이션 전 청소?

저는 스프링부트와 플라이웨이를 사용하고 있습니다.마이그레이션은 잘 작동하지만, 저는 작업을 수행할 수 있기를 원했습니다.clean응용 프로그램 컨텍스트가 로드될 때 flyway 명령test옆모습

SpringBoot을 구성하여 다음 작업을 수행할 수 있습니까?clean그리고 나서.migrate활성 프로파일이 다음과 같은 경우test?

다음과 같이 Flyway 자동 구성을 덮어쓸 수 있습니다.

@Bean
@Profile("test")
public Flyway flyway(DataSource theDataSource) {
    Flyway flyway = new Flyway();
    flyway.setDataSource(theDataSource);
    flyway.setLocations("classpath:db/migration");
    flyway.clean();
    flyway.migrate();

    return flyway;
}

Spring Boot 1.3(현재 버전은 1.3.0.M1, GA 릴리스는 9월 예정)에서 Flyway Migration Strategy 빈을 사용하여 실행할 작업을 정의할 수 있습니다.

@Bean
@Profile("test")
public FlywayMigrationStrategy cleanMigrateStrategy() {
    FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
        @Override
        public void migrate(Flyway flyway) {
            flyway.clean();
            flyway.migrate();
        }
    };

    return strategy;
}

스프링 부트의 최신 버전(예: 2.0.2)에서는 속성을 사용할 수 있습니다.spring.flyway.clean-on-validation-errorsql 파일 변경으로 인해 clean을 사용하려는 경우

@dunni와 동일한 답변(참, 감사합니다!), 그러나 최신 Java 8+로 업데이트되었습니다.

@Profile("test")
@Bean
public FlywayMigrationStrategy flywayCleanMigrationStrategy() {
  return flyway -> {
    flyway.clean();
    flyway.migrate();
  };
}

그리고 필요하다면 코틀린 버전이 있습니다 :)

@Profile("test")
@Configuration
class FlywayMigrationConfig {
    @Bean
    fun flywayCleanMigrationStrategy() = FlywayMigrationStrategy {
        it.clean()
        it.migrate()
    }
}

언급URL : https://stackoverflow.com/questions/30830441/how-to-run-flywayclean-before-migrations-in-a-springboot-app

반응형