Spring Cloud Config Server akzeptiert mehrere Profile und gibt die Eigenschaften für alle Profile zurück, wenn ich auf den Endpunkt / env der Anwendung zugreife. Die Antwort listet die spezifischen Eigenschaften für jedes Profil auf. Wenn dieselbe Eigenschaft in 2 verschiedenen Eigenschaftendateien vorhanden ist, hat die zuletzt definierte Priorität Vorrang. Gibt es eine Möglichkeit, die endgültige Liste der Eigenschaftenschlüssel und Werte zu erhalten, die von der Anwendung verwendet werden?
Für die Cloud-Konfigurationsclientanwendung
Ich habe verschiedene Wege ausprobiert und Folgendes (zufällig) gefunden:
GET /env/.*
gibt die vollständige Liste der Konfigurationseigenschaften zurück
Für die Cloud Config-Serveranwendung
Es stellt sich heraus, dass dies bereits implementiert, aber nicht gut dokumentiert ist. Sie müssen nur json
, yml
oder properties
gemäß den Mustern anfordern:
Dies scheint eine absichtliche Einschränkung des Spring Framework zu sein.
Siehe hier
Sie könnten es hacken und die PropertySources-Schnittstelle injizieren und dann alle einzelnen PropertySource-Objekte durchlaufen, aber Sie müssten wissen, nach welchen Eigenschaften Sie suchen.
Entschuldigung ... das ist das erste Mal, dass ich hier eine Frage beantworte. Ich habe ein Konto speziell für erstellt Beantworten Sie diese Frage, weil ich bei der Untersuchung des gleichen Problems darauf gestoßen bin. Ich habe einen ... gefunden Lösung, die für mich arbeitete und beschlossen, es zu teilen.
Hier folgt meine Erklärung, was getan wurde:
Ich initialisiere ein neues "Eigenschaften" -Objekt (könnte eine HashMap oder was auch immer Sie wollen)
Ich suche die Property-Quelle für die "bootstrapProperties", die ein CompositePropertySource-Objekt ist. Diese Eigenschaftenquelle enthält alle Anwendungseigenschaften, die geladen wurden.
Ich durchlaufe alle Eigenschaftsnamen, die von der Methode "getPropertyNames" für das CompositePropertySource-Objekt zurückgegeben werden und erstellen Sie einen neuen Eigenschaftseintrag.
Ich gebe das Eigenschaftsobjekt zurück.
Mit Spring Boot können Sie Ihre Konfiguration externalisieren, sodass Sie in verschiedenen Umgebungen mit demselben Anwendungscode arbeiten können. Sie können Eigenschaftendateien, YAML-Dateien, Umgebungsvariablen und Befehlszeilenargumente verwenden, um die Konfiguration zu externalisieren. Eigenschaftswerte können direkt in Ihre Beans mit der Annotation @Value eingefügt werden, auf die über die Spring-Umgebung-Abstraktion zugegriffen wird oder über @ConfigurationProperties an strukturierte Objekte gebunden wird.
Spring Boot verwendet eine sehr spezielle PropertySource-Reihenfolge, die ein sinnvolles Überschreiben von Werten ermöglicht. Eigenschaften werden in der folgenden Reihenfolge berücksichtigt:
Das folgende Programm druckt Eigenschaften aus der Spring-Boot-Umgebung.
%Vor%Tags und Links spring-boot spring-cloud-netflix spring-cloud-config