Spring Boot ist ein Framework, das die Entwicklung von Java-Anwendungen erleichtert. Eine wichtige Komponente in jeder Anwendung ist die Verwaltung von Konfigurationsdaten. Diese Daten können Parameter wie Datenbankverbindungen, API-Endpunkte, Schwellenwerte und viele andere Einstellungen sein. In diesem Artikel werden wir untersuchen, wie Sie mit der @ConfigurationProperties-Annotation Konfigurationsdaten in Ihre Spring Boot-Anwendung einlesen und darauf zugreifen können.

Die @ConfigurationProperties-Annotation

Die @ConfigurationProperties-Annotation ist ein Schlüsselkonzept in Spring Boot, um Konfigurationsdaten in einer strukturierten Weise zu verwalten. Sie ermöglicht es Ihnen, Konfigurationsdaten aus verschiedenen Quellen wie application.properties, application.yml, Umgebungsvariablen und benutzerdefinierten Quellen zu laden und diese Daten in POJOs (Plain Old Java Objects) zu binden. Dies erleichtert die Verwendung und Aktualisierung von Konfigurationsdaten in Ihrer Anwendung.

Schritt-für-Schritt-Anleitung

Lassen Sie uns nun Schritt für Schritt durchgehen, wie Sie @ConfigurationProperties in Ihrer Spring Boot-Anwendung verwenden können.

Schritt 1: Abhängigkeiten hinzufügen

Zuerst müssen Sie sicherstellen, dass Sie die richtigen Abhängigkeiten in Ihrer build.gradle oder pom.xml Datei haben, um die Verwendung von Spring Boot und @ConfigurationProperties zu ermöglichen. In den meisten Fällen sind diese Abhängigkeiten bereits in einem Spring Boot-Projekt vorhanden.

Schritt 2: Konfigurationsklasse erstellen

Erstellen Sie eine Java-Klasse, die als Konfigurationsklasse dient und die @Configuration-Annotation enthält (dadurch wird sie von Spring direkt als Bean instanziert – diese Annotation ist, auch wenn der Name es suggerieren mag, nicht zwingend nötig, um Konfigurationsdaten über die @ConfigurationProperties-Annotation einzulesen; das geht auch mit jeder anderen Spring Bean Klasse). In dieser Klasse werden die Konfigurationsdaten und deren Struktur definiert.

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "meineanwendung")
public class AnwendungsEinstellungen {
    private String name;
    private int port;
    private List<String> serverList;
    private Map<String, String> zusatzInformationen;

    // Getter und Setter für die oben definierten Felder
}Code-Sprache: JavaScript (javascript)

In diesem Beispiel erstellen wir eine Klasse namens AnwendungsEinstellungen, die Konfigurationsdaten für unsere Anwendung enthält. Die @ConfigurationProperties-Annotation wird mit dem prefix-Parameter verwendet, um die Konfigurationsdaten zu gruppieren. Hier verwenden wir das Prefix „meineanwendung“, und daher werden alle Konfigurationsdaten, die mit diesem Prefix beginnen, in diese Klasse gebunden.

Schritt 3: Konfigurationsdatei erstellen

Erstellen Sie eine Konfigurationsdatei (normalerweise application.properties oder application.yml), in der Sie die Konfigurationsdaten definieren. Beachten Sie, dass das Prefix im Namen der Eigenschaften in der Datei entsprechen muss.

application.properties:

meineanwendung.name=Meine Spring Boot Anwendung
meineanwendung.port=8080
meineanwendung.serverList=Server1,Server2,Server3
meineanwendung.zusatzInformationen.key1=Wert 1
meineanwendung.zusatzInformationen.key2=Wert 2

application.yml:

meineanwendung:
  name: Meine Spring Boot Anwendung
  port: 8080
  serverList:
    - Server1
    - Server2
    - Server3
  zusatzInformationen:
    key1: Wert 1
    key2: Wert 2

In der Konfigurationsdatei sind die Eigenschaften genau wie in der AnwendungsEinstellungen-Klasse strukturiert und mit dem entsprechenden Prefix versehen.

Schritt 4: Anwendungsklasse konfigurieren

In Ihrer Hauptanwendungsklasse müssen Sie die Konfigurationsklasse registrieren, indem Sie die @EnableConfigurationProperties-Annotation verwenden. Dies ermöglicht es Spring Boot, die Konfigurationsdaten aus der Datei in die AnwendungsEinstellungen-Klasse zu binden.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties(AnwendungsEinstellungen.class)
public class MeinAnwendungsStarter {
    public static void main(String[] args) {
        SpringApplication.run(MeinAnwendungsStarter.class, args);
    }
}Code-Sprache: JavaScript (javascript)

Schritt 5: Konfigurationsdaten verwenden

Nun können Sie die Konfigurationsdaten in Ihren Spring Beans verwenden, indem Sie einfach eine Instanz der AnwendungsEinstellungen-Klasse injizieren. Spring Boot wird automatisch die Daten aus der Konfigurationsdatei laden und in diese Instanz binden.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MeinService {
    private final AnwendungsEinstellungen einstellungen;

    @Autowired
    public MeinService(AnwendungsEinstellungen einstellungen) {
        this.einstellungen = einstellungen;
    }

    public void zeigeKonfiguration() {
        System.out.println("Anwendungsname: " + einstellungen.getName());
        System.out.println("Port: " + einstellungen.getPort());
        System.out.println("Serverliste: " + einstellungen.getServerList());
        System.out.println("Zusatzinformationen: " + einstellungen.getZusatzInformationen());
    }
}Code-Sprache: PHP (php)

In diesem Beispiel haben wir eine Serviceklasse erstellt und die AnwendungsEinstellungen-Instanz über den Konstruktor injiziert. Sie können nun problemlos auf alle Konfigurationsdaten zugreifen.

Schritt 6: Anwendung starten

Jetzt können Sie Ihre Spring Boot-Anwendung starten und auf die Konfigurationsdaten zugreifen, die in der AnwendungsEinstellungen-Klasse definiert sind. Führen Sie einfach die zeigeKonfiguration()-Methode Ihres Dienstes aus.

@SpringBootApplication
@EnableConfigurationProperties(AnwendungsEinstellungen.class)
public class MeinAnwendungsStarter {
    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(Me

inAnwendungsStarter.class, args);
        MeinService service = context.getBean(MeinService.class);
        service.zeigeKonfiguration();
    }
}Code-Sprache: JavaScript (javascript)

Komplexe Objektbaumstrukturen

In vielen Fällen werden Sie Konfigurationsdaten haben, die komplexere Strukturen erfordern. Dies können verschachtelte Objekte, Listen oder Maps sein. Spring Boot unterstützt diese Szenarien problemlos.

Verschachtelte Objekte

Sie können verschachtelte Objekte in Ihrer AnwendungsEinstellungen-Klasse erstellen, um komplexere Konfigurationsdaten zu verwalten. Zum Beispiel:

public class AnwendungsEinstellungen {
    private Server server;
    // ...

    // Getter und Setter
}

public class Server {
    private String name;
    private int port;
    // ...

    // Getter und Setter
}Code-Sprache: PHP (php)

Die entsprechenden Konfigurationsdaten in Ihrer application.properties oder application.yml Datei würden so aussehen:

meineanwendung.server.name=Mein Server
meineanwendung.server.port=8080

Listen

Wenn Sie eine Liste von Werten haben, können Sie sie einfach als Feld in Ihrer Konfigurationsklasse definieren. Zum Beispiel:

public class AnwendungsEinstellungen {
    private List<String> serverList;
    // ...

    // Getter und Setter
}Code-Sprache: PHP (php)

Die entsprechende Konfigurationsdatei würde so aussehen:

meineanwendung.serverList=Server1,Server2,Server3

Maps

Wenn Sie eine Map von Schlüssel-Wert-Paaren benötigen, können Sie dies ebenfalls in Ihrer Konfigurationsklasse definieren. Zum Beispiel:

public class AnwendungsEinstellungen {
    private Map<String, String> zusatzInformationen;
    // ...

    // Getter und Setter
}Code-Sprache: JavaScript (javascript)

Die entsprechende Konfigurationsdatei würde so aussehen:

meineanwendung.zusatzInformationen.key1=Wert 1
meineanwendung.zusatzInformationen.key2=Wert 2

Fazit

Die @ConfigurationProperties-Annotation ist ein leistungsfähiges Werkzeug in Spring Boot, um Konfigurationsdaten in Ihrer Anwendung zu verwalten. Mit dieser Annotation können Sie die Struktur Ihrer Konfigurationsdaten definieren, sie aus verschiedenen Quellen laden und nahtlos in Ihre Anwendung integrieren. Dies ermöglicht eine saubere und wartbare Verwaltung von Konfigurationsdaten, selbst bei komplexen Objektbaumstrukturen, Listen und Maps.

In diesem Artikel haben wir die grundlegenden Schritte zur Verwendung von @ConfigurationProperties in Ihrer Spring Boot-Anwendung erläutert. Wir haben auch gezeigt, wie Sie mit komplexeren Datenstrukturen umgehen können. Mit diesem Wissen können Sie Ihre Anwendungen flexibler gestalten und Konfigurationsdaten effizienter verwalten.

Die Verwendung von @ConfigurationProperties ist nur eine der vielen Möglichkeiten zur Verwaltung von Konfigurationsdaten in Spring Boot. Je nach den Anforderungen Ihrer Anwendung können Sie auch andere Ansätze wie Umgebungsvariablen, die Spring Cloud Config Server oder externe Konfigurationsquellen in Betracht ziehen. Die Wahl des richtigen Ansatzes hängt von den spezifischen Anforderungen Ihres Projekts ab.