2016-03-29 5 views
3

ich möchte, dass Entwickler einige Konfigurationseigenschaften lokal überschreiben können. (Sagen wir, wir arbeiten auf Google Drive und jeder sollte es auf eigene Rechnung testen). Ich möchte Eigenschaften nicht über die Befehlszeile überschreiben (weil sie in jeder IDE-Konfiguration und bei jeder CLI-Ausführung gesetzt werden muss).Spring Boot: Hinzufügen neuer Yml-Dateien zur Anwendungskonfiguration

was ich will ist: Anwendung sollte alle Standard-Spring-Boot-Config-Dateien (application.yml usw.) verwenden und auch nach z. local.yml (auf dem Klassenpfad) oder eine Datei innerhalb user.home. und diese zusätzlichen Dateien sollten andere Einstellungen überschreiben.

wie Sie neue yml Ressourcen hinzufügen und sie richtig bestellen?

edit: ich kenne die Standard-Aufträge und Standorte des Frühlings. Frage ist, über das Hinzufügen von neue diejenigen

Antwort

0

Von Spring Boot Documentation : Application property files:

SpringApplication lädt Objekte application.properties Dateien in den folgenden Orten und fügen Sie sie zum Frühling Umwelt:

  • A/config Unterverzeichnis des aktuellen Verzeichnisses.
  • Das aktuelle Verzeichnis
  • A classpath/config Paket
  • Die Wurzel classpath

Die Liste nach Rangfolge geordnet ist (Eigenschaften in Positionen höher in der Liste definiert diejenigen in niedrigeren Positionen definiert überschreiben).

Dies gilt auch für yaml, so dass Sie alle application.yml unter config Verzeichnis hinzufügen können, unter dem Verzeichnis, aus dem Sie das Spring Boot jar ausführen.

Sie können auch die zusätzliche Konfigurationsdatei anpassen local.yml sein, wenn Sie spring.config.location unter Verwendung möchten:

--spring.config.location=classpath:/application.yml,classpath:/local.yml

ist jedoch zu beachten:

spring.config.name und spring.config.location wird sehr früh verwendet, um zu bestimmen, welche Dateien geladen werden müssen, so dass sie als Umgebungseigenschaft definiert werden müssen (normalerweise OS env, system property oder command lin Das Argument).

+0

ich sagte, ich will nicht Befehlszeileneigenschaften – piotrek

+0

@piotrek warum nicht nutzen? Ihr Argument, dass Sie es nicht innerhalb einer IDE verwenden können, erscheint mir seltsam, weil Sachen wie Umgebungsvariablen und Eigenschaften wie 'spring.config.location' leicht in einer IDE gesetzt werden können. – g00glen00b

+1

es ist nicht so, dass ich nicht kann. Ich will einfach nicht. Es muss für jede einzelne Laufzeitkonfiguration, für jeden einzelnen Befehlszeilenaufruf von jedem Entwickler festgelegt werden. Ich möchte, dass die Anwendung ohne zusätzliche Optionen funktioniert und dass vorhandene Konfigurationsdateien automatisch übernommen werden – piotrek

1

Wenn man sich im Frühjahr Boot-Dokumentation über die Standorte für Konfigurationsdateien (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config) können Sie sehen, dass sie von den folgenden Orten geladen werden (unter anderem):

  • Profil -spezifische Anwendungseigenschaften außerhalb Ihres gepackten Jars (Anwendung - {Profil} .properties und YAML-Varianten)
  • Anwendungseigenschaften außerhalb Ihres gepackten Jars (application.properties und YAML-Varianten).

Es gibt zwei Standards Orte, an denen sie aus geladen werden (siehe http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files):

  • A/config Unterverzeichnis des aktuellen Verzeichnisses.
  • Das aktuelle Verzeichnis

Aktuelles Verzeichnis in diesem Fall bedeutet das Arbeitsverzeichnis für den Java-Prozess (in der Regel das Verzeichnis, in dem die JAR befindet, oder im Falle von mit in der IDE ausgeführt wird, in der Regel Stammordner des Projekts). So können die Entwickler einfach ihre eigenen Konfigurationsdateien an diesen Orten ablegen und sie werden automatisch geladen (und überschreiben Eigenschaften innerhalb der JARs). Fügen Sie diese Dateien zu .gitignore (oder .svnignore oder ...) hinzu und sie werden nicht versehentlich in Ihr Repository eingebunden.

0

Um die Konfiguration von einem externen Konfigurationsdatei im Frühjahr-Boot-Anwendung zur Verfügung stellen -

-Dspring.config.location=file:/home/vfroot/Workspace/project/MODULE_HOME/application.yaml 

dieser Befehl mit Terminal ausgeführt werden kann:

mvn saubere Installation -Dspring.config.location = Datei: /home/vfroot/Workspace/MODULE_HOME/application.yaml

oder müssen in Eclipse setzen VM argument.

Auch die aktiven Profile einzustellen:

-Dspring.profiles.active=dev