Skip to content
Lektion undefined von undefined0/undefined abgeschlossen
Modul 9 — Configuration & Profiles

Configuration & Profiles

0 pts

Konfiguration & Profile

Spring Boot macht Konfiguration extern, type-safe und umgebungsspezifisch.

Lektion 41: application.yml & @ConfigurationProperties

app:
  name: "Demo API"
  max-connections: 100
  timeout: 30s
  features:
    - audit
    - metrics
@ConfigurationProperties(prefix = "app")
public record AppProperties(
    String name,
    int maxConnections,
    Duration timeout,
    List<String> features
) {}

Type-safe, validated, documented. Kein @Value-String-Parsing.

Lektion 42: Profile

# application-dev.yml
app:
  max-connections: 10

# application-prod.yml
app:
  max-connections: 200
java -jar app.jar --spring.profiles.active=prod

Profile für Umgebungen

Profile ermöglichen unterschiedliche Konfiguration pro Umgebung: dev (Debug, H2-DB), staging (Test-DB), prod (Produktions-DB). Aktivierung per --spring.profiles.active=prod oder Umgebungsvariable SPRING_PROFILES_ACTIVE=prod.

Lektion 43: Externe Konfiguration

Quellen (Priorität absteigend):

  1. Kommandozeilenargumente
  2. Umgebungsvariablen (APP_NAME=...)
  3. application-{profile}.yml
  4. application.yml
  5. Standardwerte im Code

Lektion 44: Type-safe Configuration

@Bean
CommandLineRunner demo(AppProperties props) {
    return args -> {
        System.out.println("Name: " + props.name());
        System.out.println("Timeout: " + props.timeout());
        props.features().forEach(f -> System.out.println("Feature: " + f));
    };
}

Lektion 45: Config-Validierung

@ConfigurationProperties(prefix = "app")
@Validated
public record AppProperties(
    @NotBlank String name,
    @Min(1) @Max(1000) int maxConnections,
    @NotNull Duration timeout,
    List<String> features
) {}

Spring prüft beim Start: fehlt app.name oder ist maxConnections > 1000, startet die App gar nicht — Fail-fast.

Java Playground — Config simuliertBereit
Editor wird geladen…

Fail-fast durch @Validated auf Config-Records

Ohne Prüfung startet die App mit fehlenden Werten und fällt erst im Betrieb auf. @Validated + Constraints wie @NotBlank prüfen die Properties beim Start — fehlt app.jwtSecret, beendet Spring den Start sofort mit klarer Fehlermeldung. Das ist der Unterschied zwischen einem Build-Fehler und einem 3-Uhr-Timeout.

Praxis-Szenario: CropGuard: AppProperties

AppProperties bindet cropguard.jwtSecret und cropguard.jwtExpirationSeconds per @ConfigurationProperties. In application-dev.yml steht ein kurzes Secret und 8 h Laufzeit; in Produktion kommt das Secret aus einer Umgebungsvariable.

✅ Wichtige Erkenntnisse

Haken setzen, um deinen Lernfortschritt zu markieren:

    This site uses essential cookies for Stripe payments. No tracking cookies.