Spring YAML-Konfiguration

1. Übersicht

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.

2. Spring YAML-Datei

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

Es folgt eine einfache YAML-Datei, die zwei Profile enthält. Die drei Striche zwischen den beiden Profilen geben den Beginn eines neuen Dokuments an, sodass alle Profile in derselben YAML-Datei beschrieben werden können.

Der relative Pfad der Datei application.yml lautet /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: config: activate: on-profile: test name: test-YAML environment: testing enabled: false servers: - www.abc.test.com - www.xyz.test.com --- spring: config: activate: on-profile: prod name: prod-YAML environment: production enabled: true servers: - www.abc.com - www.xyz.com

3. Binden von YAML an eine Konfigurationsklasse

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 boolean enabled; 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 mit @ConfigurationProperties annotierte Beans in der Spring-Anwendungzu aktivieren

4. Zugriff auf die YAML-Eigenschaften

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

Setzen wir in der Eigenschaftendatei die Umgebungsvariable spring.active.profiles auf prod . Wenn wir spring.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 mit dem CommandLineRunner 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("enabled:" + myConfig.isEnabled()); System.out.println("servers: " + myConfig.getServers()); } }

Die Ausgabe in der Befehlszeile:

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

5. Überschreiben der YAML-Eigenschaft

In Spring Boot können YAML-Dateien von anderen YAML-Eigenschaftendateien überschrieben werden.

Vor Version 2.4.0 wurden YAML-Eigenschaften von Eigenschaftendateien an den folgenden Speicherorten in der Reihenfolge mit der höchsten Priorität zuerst überschrieben:

  • Die Eigenschaften der Profile werden außerhalb des verpackten Glases platziert
  • Die Eigenschaften der Profile sind im verpackten Glas verpackt
  • Anwendungseigenschaften außerhalb des verpackten Glases
  • Anwendungseigenschaften im verpackten Glas

Ab Spring Boot 2.4 überschreiben externe Dateien gepackte Dateien immer, unabhängig davon, ob sie profilspezifisch sind oder nicht.

6. Fazit

In diesem kurzen Artikel haben wir gesehen, wie Sie Eigenschaften in Spring Boot-Anwendungen mit 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 ist auf GitHub verfügbar.