Spring YAML-Konfiguration

Spring YAML-Konfiguration

1. Überblick

Eine Möglichkeit zum Konfigurieren von Spring-Anwendungen ist die Verwendung von YAML-Konfigurationsdateien.

In diesem kurzen Artikel konfigurieren wir verschiedene Profile für eine einfache Spring Boot-Anwendung mit YAML.

Weitere Lektüre:

Eine Kurzanleitung zu Spring @Value

Erfahren Sie, wie Sie mit der Anmerkung Spring @Value Felder aus Eigenschaftendateien, Systemeigenschaften usw. konfigurieren.

Read more

Verwenden von Spring @Value mit Standardeinstellungen

Eine schnelle und praktische Anleitung zum Festlegen von Standardwerten bei Verwendung der @ Value-Annotation im Frühjahr.

Read more

Wie füge ich einen Eigenschaftswert in eine Klasse ein, die nicht bis zum Frühjahr verwaltet wird?

Erfahren Sie, wie Sie Eigenschaftswerte in Java-Klassen ohne die direkte Verwendung des Spring-Injektionsmechanismus initialisieren.

Read more

2. Spring YAML-Datei

Mithilfe von Federprofilen können Spring Applications unterschiedliche Eigenschaften für unterschiedliche Umgebungen definieren.

Das Folgende ist eine einfache YAML-Datei, die zwei Profile enthält. The three dashes separating the two profiles indicate the start of a new document so all the profiles can be described in the same YAML file.

Der relative Pfad derapplication.yml-Datei ist/myApplication/src/main/resources/application.yml.

Die Spring-Anwendung verwendet das erste Profil als Standardprofil, sofern in der Spring-Anwendung nichts anderes angegeben ist.

spring:
    profiles: test
name: test-YAML
environment: test
servers:
    - www.abc.test.com
    - www.xyz.test.com

---
spring:
    profiles: prod
name: prod-YAML
environment: production
servers:
    - www.abc.com
    - www.xyz.com

3. YAML an eine Konfigurationsklasse binden

Um eine Reihe verwandter Eigenschaften aus einer Eigenschaftendatei zu laden, erstellen wir eine Bean-Klasse:

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class YAMLConfig {

    private String name;
    private String environment;
    private List servers = new ArrayList<>();

    // standard getters and setters

}

Die hier verwendeten Anmerkungen sind:

  • @Configuration markiert die Klasse als Quelle für Bean-Definitionen

  • @ConfigurationProperties bindet und validiert die externen Konfigurationen an eine Konfigurationsklasse

  • @EnableConfigurationProperties Diese Annotation wird verwendet, um@ConfigurationProperties annotierte Beans in der Spring-Anwendung zu aktivieren

4. Zugriff auf die YAML-Eigenschaften

Um auf die YAML-Eigenschaften zuzugreifen, erstellen wir ein Objekt der KlasseYAMLConfigund greifen mit diesem Objekt auf die Eigenschaften zu.

Setzen Sie in der Eigenschaftendatei die Umgebungsvariablespring.active.profilesaufprod. Wenn wirspring.profiles.active, nicht definieren, wird standardmäßig die erste in der YAML-Datei definierte Profileigenschaft verwendet.

Der relative Pfad für die Eigenschaftendatei lautet/myApplication/src/main/resources/application.properties.

spring.profiles.active=prod

In diesem Beispiel zeigen wir die Eigenschaften mitCommandLineRunner. an

@SpringBootApplication
public class MyApplication implements CommandLineRunner {

    @Autowired
    private YAMLConfig myConfig;

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.run();
    }

    public void run(String... args) throws Exception {
        System.out.println("using environment: " + myConfig.getEnvironment());
        System.out.println("name: " + myConfig.getName());
        System.out.println("servers: " + myConfig.getServers());
    }
}

Die Ausgabe in der Befehlszeile:

using environment: production
name: prod-YAML
servers: [www.abc.com, www.xyz.com]

5. Überschreiben der YAML-Eigenschaft

In Spring Boot können YAML-Dateien abhängig von ihrem Speicherort von anderen YAML-Eigenschaftendateien überschrieben werden. YAML-Eigenschaften können von Eigenschaftendateien an den folgenden Speicherorten in der Reihenfolge der höchsten Priorität zuerst überschrieben werden:

  • Profileigenschaften außerhalb des verpackten Glases

  • Profileigenschaften, die im verpackten Glas verpackt sind

  • Anwendungseigenschaften außerhalb des verpackten Glases

  • Anwendungseigenschaften im verpackten Glas verpackt

6. Fazit

In diesem kurzen Artikel haben wir gesehen, wie Sie Eigenschaften in Spring Boot-Anwendungen mithilfe von YAML konfigurieren. Wir haben auch gesehen, dass die Eigenschaften Regeln überschreiben, gefolgt von Spring Boot für YAML-Dateien.

Der Code für diesen Artikel istover on GitHub. verfügbar