Skip to content

Cum să integrezi Flyway cu Spring Boot

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să integrezi Flyway cu Spring Boot. We cover key concepts, practical examples, and best practices.

Vei învăța cum să integrezi Flyway cu Spring Boot pentru a rula migrări automate ale bazei de date la pornirea aplicației, folosind autoconfigurarea Spring Boot.

Problema

Spring Boot aplicațiile au nevoie de o schemă de date actualizată înainte de a porni. Configurarea manuală a migrărilor duce la erori de versiune și întârzieri în deploy. Flyway cu Spring Boot oferă migrare automată la pornire.

Modul Greșit

# application.yml — configurare incompletă
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/mydb
    username: dbuser
    password: dbpass
# Lipsește configurarea Flyway
// Încearcă să rulezi Flyway manual — complicat și predispus la erori
Flyway flyway = Flyway.configure()
    .dataSource(dataSource)
    .load();
flyway.migrate();

Modul Corect

# application.yml
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/mydb
    username: dbuser
    password: dbpass
  flyway:
    enabled: true
    locations: classpath:db/migration
    baseline-on-migrate: true
<!-- pom.xml — dependența Flyway -->
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>

Output la pornire:

INFO  o.f.c.i.database.base.DatabaseType  : Database: jdbc:postgresql://localhost:5432/mydb (PostgreSQL 15.0)
INFO  o.f.core.internal.command.DbMigrate  : Current version of schema "public": 1
INFO  o.f.core.internal.command.DbMigrate  : Migrating schema "public" to version 2 - add users table
INFO  o.f.core.internal.command.DbMigrate  : Successfully applied 1 migration

Pas cu Pas

1. Adaugă dependența Flyway

Pentru Maven:

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

2. Plasează scripturile în locația corectă

src/main/resources/db/migration/
  V1__create_users_table.sql
  V2__add_orders_table.sql

3. Configurează în application.yml

spring:
  flyway:
    enabled: true
    baseline-on-migrate: true
    locations: classpath:db/migration
    validate-on-migrate: true

4. Rulează aplicația

mvn spring-boot:run
# Flyway migrează automat înainte ca serverul să pornească

Sfaturi de Prevenție

  • Setează spring.flyway.enabled=false în testele unitare
  • Folosește @TestPropertySource cu o bază H2 pentru teste
  • Activează validate-on-migrate: true pentru a prinde erori devreme
  • Controlează ordinea migrărilor cu versiuni consecutive

Greșeli Comune

  1. Locație greșită a scripturilor — Spring Boot caută implicit în classpath:db/migration
  2. Fără baseline-on-migrate pe baze existente — Flyway refuză să migreze dacă schema există deja fără istoric
  3. Driver PostgreSQL lipsă — fără driverul corespunzător, conexiunea eșuează la pornire
  4. Dependența Flyway lipsește — dacă flyway-core nu e în classpath, migrarea nu se execută

Întrebări Frecvente

### Cum dezactivez Flyway într-un profil specific?
spring:
  config:
    activate:
      on-profile: test
  flyway:
    enabled: false

Pot folosi Flyway cu mai multe baze de date în Spring Boot?

Da — configurează @FlywayDataSource pentru surse secundare sau folosești flyway.multitenancy cu scheme separate.

Cum configurez Flyway programatic?

@Configuration
public class FlywayConfig {
    @Bean
    public FlywayMigrationStrategy flywayMigrationStrategy() {
        return flyway -> {
            flyway.repair();
            flyway.migrate();
        };
    }
}

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Flyway și Spring Boot pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro