fix(backend): explicit Flyway bean to bypass broken auto-configuration

Spring Boot 4.0 Flyway auto-configuration is not triggering in the CI
environment — confirmed by empty DB and no flyway_schema_history table.
Replace YAML-based auto-config with an explicit @Bean that creates and
runs Flyway directly on startup, independent of any auto-configuration
conditions. Disable the auto-config via spring.flyway.enabled=false to
prevent interference. Add @DependsOn("flyway") to DataInitializer to
enforce that CommandLineRunner beans are only registered after migrations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-03-18 20:34:41 +01:00
parent e6db43850b
commit a60905674f
3 changed files with 32 additions and 5 deletions

View File

@@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.raddatz.familienarchiv.model.AppUser;
import org.springframework.context.annotation.DependsOn;
import org.raddatz.familienarchiv.model.Document;
import org.raddatz.familienarchiv.model.DocumentStatus;
import org.raddatz.familienarchiv.model.Person;
@@ -27,6 +28,7 @@ import java.util.Set;
@Configuration
@RequiredArgsConstructor
@Slf4j
@DependsOn("flyway")
public class DataInitializer {
@Value("${app.admin.username:admin}")

View File

@@ -0,0 +1,29 @@
package org.raddatz.familienarchiv.config;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flywaydb.core.Flyway;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
@RequiredArgsConstructor
@Slf4j
public class FlywayConfig {
private final DataSource dataSource;
@Bean(name = "flyway")
public Flyway flyway() {
log.info("Running Flyway migrations...");
Flyway flyway = Flyway.configure()
.dataSource(dataSource)
.locations("classpath:db/migration")
.load();
var result = flyway.migrate();
log.info("Flyway: {} migration(s) applied.", result.migrationsExecuted);
return flyway;
}
}

View File

@@ -9,11 +9,7 @@ spring:
driver-class-name: org.postgresql.Driver
flyway:
enabled: true
locations: classpath:db/migration
url: ${SPRING_DATASOURCE_URL}
user: ${SPRING_DATASOURCE_USERNAME}
password: ${SPRING_DATASOURCE_PASSWORD}
enabled: false # Managed explicitly via FlywayConfig bean
jpa:
hibernate: