[JAVA] Behandeln Sie Systemumgebungsvariablen in Spring application.properties

Einführung

Wenn Sie eine App mit Spring (Boot) erstellen, möchten Sie möglicherweise den Wert aus der Systemumgebungsvariablen abrufen. Ich werde die Erfassungsmethode vorstellen, die auch als Memo dient.

Wann werden Systemumgebungsvariablen verwendet?

Wenn Sie beispielsweise eine Verbindung zur Datenbank herstellen möchten, müssen Sie in "application.properties" Folgendes festlegen.

application.properties


###DB-Verbindungseinstellungswert###
spring.datasource.url=<Datenbank-URL>
spring.datasource.username=<Nutzername>
spring.datasource.password=<Passwort>

In einem solchen Fall können die folgenden Vorteile berücksichtigt werden, wenn jeder Einstellungswert von der Systemumgebungsvariablen erfasst wird.

① __ Es ist nicht erforderlich, für jede Umgebung eine Einstellungsdatei zu erstellen. __ __ Dieselbe Konfigurationsdatei kann in anderen Umgebungen verwendet werden, indem die Umgebungsvariablen im Voraus oder zur Laufzeit festgelegt werden. Es ist mühsam, mehrere Einstellungsdateien (z. B. "application-devXX.properties") für jede Umgebung zu erstellen und zu verwalten, sodass sie weggelassen werden können.

Es ist auch nicht erforderlich, den Prozess zum Festlegen der zu lesenden Datei für jede Umgebung im Quellcode zu schreiben. (Da Spring Boot standardmäßig application.properties lädt)

② __ Dies führt zu einer Verbesserung der Sicherheit. __ __ Wenn Sie die Informationen, die Sie geheim halten möchten, wie Benutzername und Pfadkennwort, in application.properties ablegen und in das Remote-Repository hochladen, kann dies zu einem Sicherheitsproblem führen.

Wenn Sie es als Umgebungsvariable festlegen, wird der Wert nicht direkt geschrieben, sodass Sie ihn sicher in das Remote-Repository übertragen können.

Verwendung von Systemumgebungsvariablen in application.properties

Stellen Sie das folgende Format ein.

application.properties


spring.datasource.url=${SPRING_DATASOURCE_URL}
spring.datasource.username=${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD}

Wenn Sie beispielsweise spring.datasource.username = $ {SPRING_DATASOURCE_USERNAME} erklären,

(1) Fügen Sie zunächst der Systemumgebungsvariablen eine Variable wie "SPRING_DATASOURCE_USERNAME = HogeHoge" hinzu. Ersetzen Sie für den Namen der Umgebungsvariablen den Zielwert "". "" In der Einstellungsdatei durch "_" und setzen Sie ihn dann groß.

spring.datasource.usernamespring_datasource_usernameSPRING_DATASOURCE_USERNAME

(2) Setzen Sie in application.properties den Namen der Systemumgebungsvariablen auf den in $ {} enthaltenen Wert, z. B.$ {SPRING_DATASOURCE_USERNAME}.

Jetzt sind die Systemumgebungsvariablen unter application.properties verfügbar.

wichtiger Punkt

Wenn Sie mit Eclipse oder sts entwickeln, nachdem Sie Systemumgebungsvariablen hinzugefügt haben, diejenigen, die die Spring Boot-App auf eclipse (sts) starten oder einmal neu starten, wenn Sie versuchen, JUnit auszuführen Ist gut. Systemumgebungsvariablen werden möglicherweise nicht gelesen und es kann ein Fehler auftreten.

Wahrscheinlich, weil die Systemumgebungsvariable beim Starten von Eclipse (sts) gelesen und verwendet wird, auch wenn die Umgebungsvariable beim Start hinzugefügt wird, wird sie nicht wiedergegeben, aber die Details sind unbekannt.

Ergebnis

Systemumgebungsvariablen können aus der Einstellungsdatei verwendet werden! !! !! !! !! (Wazap)

Recommended Posts

Behandeln Sie Systemumgebungsvariablen in Spring application.properties
Ersetzen von Systemumgebungsvariablen durch Reflektion in Java
Java Spring-Umgebung in vs Code
Festlegen von Projektumgebungsvariablen mit IntelliJ
Verwendung von Umgebungsvariablen in RubyOnRails
Wenn Java-Tests Umgebungsvariablen enthalten
[Frühling] Umweltbau
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
SSO mit GitHub OAuth in der Spring Boot 1.5.x-Umgebung
Behandeln Sie das gehashte Passwort mit BCryptPasswordEncoder von Spring Security in Perl
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Injizieren Sie den Logger im Frühjahr
Spring Boot Entwicklung-Entwicklungsumgebung-
Verwenden Sie Interceptor im Frühjahr
Microservices in Spring Cloud
Holen Sie sich Cookies im Frühling
So ändern Sie den Einstellungswert von application.properties beim Booten im Frühjahrsstart
Melden Sie sich mit HttpServletRequest # in Spring Security in der Servlet 3.x-Umgebung an
Verschiedene Switching Application.Eigenschaften für jede Umgebung, wenn Spring Boot gestartet wird