[JAVA] Verschiedene Switching Application.Eigenschaften für jede Umgebung, wenn Spring Boot gestartet wird

Was du machen willst

Im Allgemeinen ist die Konfiguration für application.properties von Spring Boot wie folgt.

無題.png

Versuchen Sie bei dieser Konfiguration, die application.properties für jede Umgebung zu wechseln, wenn Spring Boot gestartet wird. Da es mehrere Einstellmethoden gibt, werden hier vier vorgestellt.

1. Legen Sie das Profil im Startargument fest

Es gibt die folgenden zwei Arten von Methoden, die im Startargument festgelegt werden müssen.

1. Befehlszeilenargumente
java -jar spring-boot-application-properties-sample-1.0.0.jar --spring.profiles.active=dev1
  1. Java System properties (System.getProperties())
java -jar -Dspring.profiles.active=dev1 spring-boot-application-properties-sample-1.0.0.jar

Jedoch, https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html Wie Sie sehen können, ist die Priorität für Befehlszeilenargumente höher. Wenn Sie also mit beiden Einstellungen beginnen, wie unten gezeigt,

$ java -jar -Dspring.profiles.active=dev1 spring-boot-application-properties-sample.jar --spring.profiles.active=dev2

Java-Systemeigenschaften (System.getProperties ()) - Dspring.profiles.active = dev1 nicht, Befehlszeilenargumente --spring.profiles.active = dev2

Beachten Sie, dass übernommen (überschrieben) wird.

2. Profileinstellungen in Betriebssystemumgebungsvariablen

Spring Boot lädt beim Start die Umgebungsvariable "SPRING_PROFILES_ACTIVE" und legt sie als Profil fest. Wenn daher "SPRING_PROFILES_ACTIVE" im Voraus in der Umgebungsvariablen des Betriebssystems definiert ist, wird das dort definierte Profil übernommen.

Windows-Einstellungen.

1.png

Linux-Einstellungen.

.


export SPRING_PROFILES_ACTIVE=dev1

Mit der obigen Definition wird beim Start von Spring Boot ein Profil mit dem Namen dev1 geladen und "application-dev1.properties" übernommen. Das Folgende ist die Konsolenausgabe zu diesem Zeitpunkt. Unten wird "Die folgenden Profile sind aktiv: dev1" ausgegeben, was darauf hinweist, dass dev1 aktiv ist.

Konsole(Auszug).log


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.3.0.RELEASE)

2017-08-20 20:27:41.807  INFO 7080 --- [           main] com.example.App                          : Starting App on N-PC with PID 7080 (C:\Development\sts-bundle\workspace\spring-boot-application-properties-sample\target\classes started by N in C:\Development\sts-bundle\workspace\spring-boot-application-properties-sample)
2017-08-20 20:27:41.807  INFO 7080 --- [           main] com.example.App                          : The following profiles are active: dev1

3. Profileinstellungen in JNDI auf dem AP-Server

In dem Fall, in dem die von Spring Boot erstellte Anwendung auf WAR gesetzt und für den Betrieb auf einem anderen AP-Server bereitgestellt wird, legt JNDI des AP-Servers sie als Profil fest. Das folgende Beispiel zeigt die Einstellung bei Verwendung von Tomcat.

In Tomcat context.xml definiert

context.xml


<?xml version="1.0" encoding="utf-8"?>
<Context>
    <Environment
            type="java.lang.String"
            name="spring.profiles.active"
            value="dev2"/>
</Context>

Wenn Sie es wie oben definieren, wird das Profil mit dem Namen dev2 beim Start von Tomcat geladen und "application-dev2.properties" wird übernommen. Das Folgende ist die Konsolenausgabe zu diesem Zeitpunkt. Unten wird "Die folgenden Profile sind aktiv: dev2" ausgegeben, und Sie können sehen, dass dev2 aktiv ist.

2.png

4. Legen Sie das Profil als Umgebungsvariable in startup.bat (sh) des AP-Servers fest

Für Tomcat Startup.bat (sh), Catalina.bat (sh) usw.

startup.bat


set "SPRING_PROFILES_ACTIVE=dev2"

startup.sh


export SPRING_PROFILES_ACTIVE=dev2

Es ist auch möglich, ein Profil in der Umgebungsvariablen "SPRING_PROFILES_ACTIVE" wie in anzugeben. In diesem Fall wird in context.xml

context.xml


<?xml version="1.0" encoding="utf-8"?>
<Context>
    <Environment
            type="java.lang.String"
            name="spring.profiles.active"
            value="dev3"/>
</Context>

Wenn es als definiert ist, hat dieses Profil (dev3 in context.xml definiert) Vorrang.

Referenz

Wechseln Sie application.properties, die zum Zeitpunkt der Erstellung für jede Umgebung in WAR mit Spring Boot enthalten sein sollen

das ist alles.

Recommended Posts

Verschiedene Switching Application.Eigenschaften für jede Umgebung, wenn Spring Boot gestartet wird
Ändern Sie das Injektionsziel für jede Umgebung mit Spring Boot 2
Hinweise zu Anmerkungen beim Schreiben von Tests für Spring Boot
Spring Boot Entwicklung-Entwicklungsumgebung-
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
[Spring Boot] Umgebungskonstruktion (macOS)
Aufbau der Docker x Spring Boot-Umgebung
Build Spring für Android 2.0.0
Spring Boot zum Lernen von Anmerkungen
Memorandum beim Spring Boot 1.5.10 → Spring Boot 2.0.0
Spring Boot zum ersten Mal
Häufige Anmerkungen für Spring Boot-Tests
Spring-Profilfunktion und Spring Boot application.properties
Verwenden Sie DBUnit für den Spring Boot-Test
Lösen Sie Nullzeiger für verschiedene Sitzungen während des MVC-Tests von Spring Boot auf.
Behandeln Sie Systemumgebungsvariablen in Spring application.properties
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Aufbau der Spring Boot + Docker Java-Entwicklungsumgebung
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
Versuchen Sie Spring Boot 1 (Umgebungskonstruktion ~ Tomcat-Start)
Javaw.exe Fehler beim Starten von Spring Boot (STS)
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen