Setzen/überschreiben Frühling / Spring-Boot-Eigenschaften zur Laufzeit
In das Projekt mit Spring Boot verwenden wir application.Eigenschaften, müssen jedoch konfigurieren einige dieser Eigenschaften (wie port-Nummer des logging-level) basiert auf einem externen Konfiguration. Wir Zugriff auf die Konfiguration über die API, so ist es bekannt, die nur zur Laufzeit.
Gibt es eine Möglichkeit außer Kraft zu setzen oder legen Sie einige Frühling-Eigenschaften zur Laufzeit (z.B. mit einem bean) und wenn ja, wie können diese erreicht werden?
- Ich verstehe es nicht. Sie können alle Arten von verschiedenen Datenquellen, die für Ihre
Environment
. Hast du die Dokumentation Lesen: docs.Frühling.io/spring-boot/docs/current/Referenz/htmlsingle/...? Warum das nicht funktioniert? - Es ist eine Frage zu Spring Boot-und Java EE-hot-reloading Eigenschaften hier stackoverflow.com/a/52648630/39998
- Port-Nummer und logging-level erfordert, dass Sie einen gesamten Kontext neu zu starten, sollten Sie vielleicht besser einen Neustart Ihres ganzen app als auch. Werfen Sie einen Blick auf diese Antwort stackoverflow.com/a/52648630/39998
Du musst angemeldet sein, um einen Kommentar abzugeben.
Man könnte dies mit Spring Cloud Config
Nur für den Zweck der illustration, hier ist ein relativ schneller Weg, um zu sehen, dynamische Eigenschaft überschreibt Laufzeit:
Ersten, für Ihre Bohne in der Lage sein zu Holen, änderung der Eigenschaften, die Sie benötigen, beschriften Sie es mit
Fügen Sie die spring-cloud-Abhängigkeit zu spring-boot-app, z.B. für gradle
( NB Sie müssen auch die spring-boot-Antrieb Abhängigkeit.)
Mit der app läuft, können Sie Ihren aktuellen config auf zB
z.B. wenn Sie eine Immobilie haben, die 'mein.Eigentum' in der Anwendung.Eigenschaften, dann siehst du etwas wie:
Ändern Sie den Wert mit der POST meine.property=Wert2 an /env als application/x-www-form-urlencoded
zB
GET /env wieder und du wirst sehen, der neue Wert wird unter der "manager" Abschnitt
Gelten die geänderten Eigenschaften, eine leere POSTEN /aktualisieren. Jetzt ist Ihre bean wird den neuen Wert.
Könnte Sie system Eigenschaften: in der variable? Wenn Sie die
PropertyPlaceholderConfigurer
Sie können die Priorität von system-Eigenschaften vs-Datei-Eigenschaften.Zum Beispiel, etwas wie:
Oben würden Sie Ihren laden .properties-Datei, aber wir setzen die Priorität auf system-Variablen erste, so, wenn Sie legen Sie eine system-variable überschrieben wird die gleiche variable in der config.
Alternativ, Blick auf die docs, Frühling empfiehlt die Festlegung einer Suche, um in Ihrer Umgebung:
Hoffentlich eine der oben genannten sollten klären, was Sie brauchen?
PropertyPlaceholderConfigurer
in eine Spring-Boot-app (ist schon vorhanden).