Spring Boot

Diese Seite bleibt auch ohne JavaScript lesbar. Suche und Buttons sind Zusatzkomfort.

Spring Boot: Auto-Configuration, Starter und Profile

Warum Boot produktive Standards liefert und wie man sie kontrolliert statt blind vertraut.

Spring Boot Auto-Configuration: sinnvolle Defaults, explizit überschreibbar ClasspathStarter vorhanden? ConditionsBean fehlt? PropertiesConfig bindet Beanregistriert Eigene @Bean gewinnt: Boot ist nicht Magie, sondern konfigurierbare Konvention/actuator/conditions zeigt, warum eine Auto-Config aktiv oder inaktiv ist
1. Boot ist Konvention plus Kontrolle

Spring Boot erkennt anhand des Classpaths, der vorhandenen Beans und der Konfiguration, welche Infrastruktur sinnvoll ist. Das ist keine Magie, sondern bedingte Konfiguration. Starter bündeln passende Abhängigkeiten, Auto-Configuration registriert passende Beans, Properties steuern Verhalten.

Im Enterprise-Umfeld ist Boot wertvoll, weil es Standards reproduzierbar macht. Gleichzeitig muss jedes Team wissen, wie Auto-Konfiguration geprüft und übersteuert wird.

Minimaler Boot-Startpunkt
@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}
Maven-Abhängigkeiten mit Starter-Prinzip
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
  </dependency>
</dependencies>
2. Configuration Properties statt @Value-Wildwuchs

Viele einzelne @Value-Felder sind schwer zu validieren und schlecht dokumentiert. Für Enterprise-Anwendungen sind typsichere @ConfigurationProperties besser: sie bilden technische Konfiguration als eigenes Objekt ab, können validiert und getestet werden.

Typsichere Konfiguration
@ConfigurationProperties(prefix = "billing")
@Validated
public record BillingProperties(
    @NotBlank String baseUrl,
    @Min(1) int connectTimeoutSeconds,
    boolean dryRun
) {}
YAML pro Umgebung
billing:
  base-url: https://billing.internal
  connect-timeout-seconds: 3
  dry-run: false

management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,prometheus
3. Profiles und Umgebungen

Profiles sind geeignet, um Umgebungsvarianten zu aktivieren. Sie sind nicht geeignet, um Fachlogik zu verzweigen. Unterschiedliche technische Infrastruktur darf über Profile variieren; fachliche Regeln sollten über Konfiguration, Strategien oder Daten modelliert werden.

Enterprise-Prüffragen

  • Nutzen wir Starter bewusst und nicht zufällig?
  • Sind Properties typsicher und validiert?
  • Ist /actuator/conditions im Troubleshooting bekannt?
  • Sind Profile technisch und nicht fachlich missbraucht?