Cum să integrezi Flyway cu Spring Boot
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
@TestPropertySourcecu o bază H2 pentru teste - Activează
validate-on-migrate: truepentru a prinde erori devreme - Controlează ordinea migrărilor cu versiuni consecutive
Greșeli Comune
- Locație greșită a scripturilor — Spring Boot caută implicit în
classpath:db/migration - Fără
baseline-on-migratepe baze existente — Flyway refuză să migreze dacă schema există deja fără istoric - Driver PostgreSQL lipsă — fără driverul corespunzător, conexiunea eșuează la pornire
- Dependența Flyway lipsește — dacă
flyway-corenu e în classpath, migrarea nu se execută
Întrebări Frecvente
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