Zum Hauptinhalt springen

Werte aus einer Properties-Datei in Spring abrufen

Spring Properties Basics
Autor
Harpal Singh
Software Engineer
Übersetzt von
Namastecode
Inhaltsverzeichnis

1. Einführung

In diesem Tutorial lernen wir, wie wir auf Werte zugreifen können, die in einer properties-Datei in einer Spring Boot-Anwendung definiert sind.

Zuerst definieren wir, wie Eigenschaften in einer Spring Boot-Anwendung konfiguriert werden. Dann schauen wir uns an, wie diese Eigenschaften zur Laufzeit in der Anwendung ausgelesen werden können.

Eine properties Datei zu haben, ist die gängigste Methode, um die Konfiguration für eine Spring Boot Anwendung auszulagern. Daher ist es für uns eine gute Möglichkeit, das Verhalten der Anwendung anzupassen, ohne den Code zu ändern.

Lassen Sie uns beginnen.

2. Definieren von Eigenschaften in Spring Boot

Zuerst müssen wir einige Eigenschaften definieren. Spring verwendet die Konvention, eine Datei namens application.properties im Ressourcenordner zu erstellen, in der wir alle Konfigurationen festhalten. Wenn wir das YAML-Format verwenden, heißt die Datei application.yml.

Nun nehmen wir an, wir möchten ein Ratenlimit für Benutzeranfragen festlegen. In unserer Eigenschaften-Datei können wir eine Eigenschaft namens userRequest.rate_limit definieren:

userRequest.rate_limit=20

Hier haben wir ein Rate-Limit von 20 Anfragen pro Minute für die Anfragen des Nutzers definiert. Schauen wir uns an, wie wir diese Eigenschaft in unserer Anwendung auslesen können.

3. Zugriff auf Eigenschaften innerhalb des Spring Service

Nun haben wir einen Wert für eine benutzerdefinierte Eigenschaft, den wir lesen können. Zu diesem Zweck können wir die @Value-Annotation innerhalb eines Spring Boot Service verwenden:

@Service
public class UserRequestService {
    
    @Value("${userRequest.rate_limit}")
    private String userRequestRateLimit;
    
    // ...
}

Kurz gesagt, die @Value-Annotation wird verwendet, um den Wert einer Eigenschaft in ein Feld in Spring zu injizieren.

Zusätzlich können wir die @Value Annotation verwenden, um Eigenschaften in Konstruktorparameter oder Methodenparameter zu injizieren:

@Service
public class UserRequestService {
    
    private final String userRequestRateLimit;
    
    @Autowired
    public UserRequestService(@Value("${userRequest.rate_limit}") String userRequestRateLimit) {
        this.userRequestRateLimit = userRequestRateLimit;
    }
    
    // ...
}

4. Standardwerte festlegen

Manchmal möchten wir nicht, dass die Eigenschaft vom Benutzer definiert wird. In solchen Fällen möchten wir, dass die Eigenschaft einen Standardwert hat. Zu diesem Zweck können wir das Format ${property:defaultValue} verwenden, um den Standardwert festzulegen:

@Value("${userRequest.rate_limit:10}")
private String userRequestRateLimit;

In diesem Fall müssen wir keinen Wert in der properties-Datei festlegen. Wenn die Eigenschaft nicht definiert ist, wird der Standardwert von 10 verwendet.

5. Fazit

In diesem kurzen Tutorial haben wir gelernt, wie man auf Werte zugreift, die in einer properties-Datei in einer Spring Boot-Anwendung definiert sind. Zuerst haben wir eine benutzerdefinierte Eigenschaft definiert und dann die @Value Annotation verwendet, um die Werte der Eigenschaft in unseren Spring-Dienst zu injizieren. Schließlich haben wir gesehen, wie man Standardwerte für Eigenschaften festlegt.

Verwandte Artikel

Konfigurieren des Ports für eine Spring Boot-Anwendung
Spring Basics
Rückgabe von HTTP 4XX-Fehlern in einer Spring-Anwendung
Spring HTTP
Konfigurieren eines Java Web Clients für HTTPS-Anfragen
WebClient HTTPS Spring