2017-05-12 2 views
0

Ich bin auf der Suche nach einer Lösung, wo Spring Boot neue Datenquelle neu erstellen, wenn DB-Passwort ohne Neustart geändert wird.Spring Boot Laufzeiteigenschaft hinzufügen

spring.datasource.url = url spring.datasource.username = usr spring.datasource.password = passwordexample no code spring.datasource.driver-class-name = oracle.jdbc.driver.OracleDriver

Ich habe Datenquelle so definiert. Was ist der beste Weg, dies zu erreichen?

Antwort

1

Es gibt einen guten Blog darüber, wie diese Art der Sache zu tun, hier https://spring.io/guides/gs/centralized-configuration/

Grundsätzlich Sie Ihre Methode mit Anmerkungen versehen, die die Datenquelle mit @RefreshScope zurückgibt, die Konfigurationswerte ändern in Ihrer externalisiert Konfiguration (Frühjahr Cloud-Config-Server) und Dann lösen Sie ein Auffrischungs-Ereignis für Ihre Anwendung aus, indem Sie den Auffrischungs-Endpunkt aufrufen, der vom Spring Boot-Aktor verfügbar gemacht wurde.

+0

ist es möglich, dass ich alle Verbindung Pool beim Starten der Anwendung erstellen und auch wenn Passwort geändert wird. Vorherige Verbindung funktioniert noch. –

+0

Das ist nichts wirklich Frühling oder JDBC zu tun. Jeder Code, der derzeit eine Verbindung verwendet, würde wahrscheinlich immer noch funktionieren, aber Sie müssen sehr vorsichtig sein, um sicherzustellen, dass alle vorhandenen Verbindungen geschlossen und in den Pool zurückgegeben wurden, bevor Sie diesen Pool zerstören und einen neuen erstellen. Sie benötigen wahrscheinlich einen benutzerdefinierten Code, in dem Sie eine Sammlung von Datenquellen haben und alte für neue Verbindungen als ungültig markieren, mit Anforderungen für neue Verbindungen, die nur den neuesten Code verwenden. – PaulNUK

+0

Danke Paul. Frage, die ich klären wollte ist. Ich erstelle eine Datenquelle beim Starten meiner Anwendung mit Verbindungspool von 10 Verbindungen. Danach, wenn mein Datenbankpasswort geändert wird. funktioniert mein älterer Verbindungspool noch? –