Liste der endgültigen Liste der Eigenschaften - Spring Cloud Config Server

8

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?

    
Punter Vicky 22.05.2017, 21:14
quelle

4 Antworten

4

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:

%Vor%     
Vyacheslav Shvets 19.06.2017 09:01
quelle
3

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.

    
dardo 16.06.2017 15:57
quelle
3
%Vor%

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:

  1. Ich initialisiere ein neues "Eigenschaften" -Objekt (könnte eine HashMap oder was auch immer Sie wollen)

  2. Ich suche die Property-Quelle für die "bootstrapProperties", die ein CompositePropertySource-Objekt ist. Diese Eigenschaftenquelle enthält alle Anwendungseigenschaften, die geladen wurden.

  3. Ich durchlaufe alle Eigenschaftsnamen, die von der Methode "getPropertyNames" für das CompositePropertySource-Objekt zurückgegeben werden und erstellen Sie einen neuen Eigenschaftseintrag.

  4. Ich gebe das Eigenschaftsobjekt zurück.

Todd Jones 22.06.2017 17:15
quelle
2
  1. Externalisierte Konfiguration

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:

  • Globale Einstellungen für Devtools in Ihrem Home-Verzeichnis (~ / .spring-boot-devtools.properties, wenn devtools aktiv ist).
  • @TestPropertySource-Anmerkungen zu Ihren Tests.
  • @ Annotationsattribut der SpringBootTest # Eigenschaften für Ihre Tests.
  • Befehlszeilenargumente.
  • Eigenschaften von SPRING_APPLICATION_JSON (Inline-JSON, eingebettet in eine Umgebungsvariable oder Systemeigenschaft)
  • ServletConfig Initialisierungsparameter.
  • ServletContext-Initialisierungsparameter.
  • JNDI-Attribute von java: comp / env.
  • Java-Systemeigenschaften (System.getProperties ()).
  • OS-Umgebungsvariablen.
  • Eine RandomValuePropertySource, die nur Eigenschaften in random. *.
  • hat
  • Profilspezifische Anwendungseigenschaften außerhalb Ihres gepackten Jars (Anwendung - {Profil} .properties und YAML-Varianten)
  • Profilspezifische Anwendungseigenschaften, die in Ihrem jar enthalten sind (application- {profile} .properties und YAML-Varianten)
  • Anwendungseigenschaften außerhalb Ihres gepackten Jars (application.properties und YAML-Varianten).
  • Anwendungseigenschaften, die in Ihrem jar enthalten sind (application.properties und YAML-Varianten).
  • @PropertySource-Anmerkungen zu Ihren @Configuration-Klassen.
  • Standardeigenschaften (angegeben mit SpringApplication.setDefaultProperties).

Das folgende Programm druckt Eigenschaften aus der Spring-Boot-Umgebung.

%Vor%     
Sudhakar 23.06.2017 09:38
quelle