application.yml vs application.properties für Spring Boot

75

In meinem Projekt verwende ich derzeit application.ymlfür die Konfiguration. Spring Initializr generieren application.properties? Was sind die Vor- und Nachteile für jeden einzelnen?

Cupakob
quelle

Antworten:

67

Nun, es sind nur verschiedene Datenformate. Welches ist schöner und leichter zu lesen? Das ist natürlich subjektiv. Hier ist ein nützlicher Blog-Beitrag.

spring-bootBeachten Sie bei der Konfiguration, dass es nur einen dokumentierten Mangel bei der Verwendung gibt YAML. Gemäß der Dokumentation :

YAML-Dateien können nicht über die @PropertySourceAnnotation geladen werden . Für den Fall, dass Sie Werte auf diese Weise laden müssen, müssen Sie eine Eigenschaftendatei verwenden.

YoungSpice
quelle
1
Ist das YAML-Konfigurationsformat in der gesamten SpringBoot-Welt weit verbreitet? Wenn wir zu einer Bibliothek eines Drittanbieters kommen, die nur die Konfiguration des Eigenschaftenformats bietet, ist es dann einfach, sie selbst in das Yaml-Format zu konvertieren?
Bruce Sun
@BruceSun Es scheint nicht so akzeptiert zu sein, da die offizielle Dokumentation es selten verwendet. Dies verwendet beispielsweise .properties: docs.spring.io/spring-boot/docs/current/reference/html/… Aber die Spring Boot-Projektvorlage meines Unternehmens hat yml ...
Masterxilo
4
Sie sind nicht nur verschiedene Datenformate. YAML unterstützt utf-8, application.properties nicht
Nurlan
1
Eine weitere Frage zu diesem Thema: Wenn ich für eine Bibliothek eine Konfiguration für die Datei application.yml festlegen muss, kann ich davon ausgehen, dass sie geladen werden kann, wenn ich nur die Eigenschaft in der Datei application.properties festlege? Um genau zu sein, ist es der gleiche Mechanismus, eine Eigenschaft für beide Dateien zu laden?
David Fariña
4
Was passiert auch, wenn meine Codebasis sowohl eine application.yamlals auch eine bietet application.properties? Kann ich das Zeug einfach in das .yamleine verschieben .properties(Format nach Bedarf ändern) und erwarten, dass die Dinge weiterhin auf die gleiche Weise funktionieren?
Erik Kaplun
27

Schöne Frage, ich bin auch sofort damit verwechselt.

Kommt auf den Punkt, Nach meinem Wissen sind folgende Unterschiede,

1.) .properties-Datei: Sie speichert Daten im sequentiellen Format. .yml-Datei: Speichert Daten in hierarchischem Format.

2.) .properties-Datei: Sie unterstützt nur Schlüssel-Wert-Paare, im Wesentlichen Zeichenfolgenwerte. .yml-Datei: Unterstützt Schlüssel-Wert-Paare sowie Karten-, Listen- und Skalartypwerte .

3.) .properties-Datei: Diese Datei wurde speziell für JAVA verwendet. .yml-Datei: Dieser Dateityp wird von vielen Sprachen wie JAVA, Python, ROR usw. verwendet.

4.) Wenn Sie mehrere Profile verarbeiten möchten, .properties-Datei: In diesem Fall müssen Sie für jedes Profil eine eigene Datei verwalten. .yml-Datei: In diesem Dateityp müssen Sie nur eine einzelne Datei verwalten und Konfigurationsdaten eines bestimmten Profils darin ablegen .

5.) Für Spring-Projekte unterstützt die Datei .properties file: @PropertySource annotation diesen Dateityp. .yml-Datei: Die Annotation @PropertySource kann diesen Dateityp nicht unterstützen.

Derzeit weiß ich nur über diese Punkte Bescheid !!!

Dhwanil Patel
quelle
Gute Antwort, nur Anmerkungen zu Punkt 2 .properties file : Kann Schlüssel-Wert-Paare sowie Karten-, Listen- und Skalartypwerte unterstützen. + Punkt 3 .properties file kann mit jeder Sprache verwendet werden
ahmednabil88
1

Ein bemerkenswerter Unterschied besteht darin, wie die Eigenschaften in jeder Datei dargestellt werden. YAML-Dateien können konsistente Leerzeichen verwenden, um die Hierarchie zu kennzeichnen, während die Eigenschaftendatei = verwenden kann, um Eigenschaftswerte zu bezeichnen.

Zum Beispiel.

Listen werden in YAML hierarchisch dargestellt:

Überschriften:

  - user-agent
  - x-wag-diagonalsize

Listen können als Inline-Liste (durch Kommas getrennt) in einer Eigenschaftendatei dargestellt werden:

headers = user-agent, x-wag-diagonalsize

Ein weiterer Unterschied besteht darin, dass wir mehrere Konfigurationsdateien zu einer einzelnen Yaml-Datei hinzufügen können.

Zum Beispiel können wir application.yaml (anwendungsspezifische Eigenschaften) und bootstrap.yaml (serverspezifische Eigenschaften) zu einer einzigen config.yaml-Datei hinzufügen

Parthiban
quelle