Im Allgemeinen ist die Konfiguration für application.properties von Spring Boot wie folgt.
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.
Es gibt die folgenden zwei Arten von Methoden, die im Startargument festgelegt werden müssen.
java -jar spring-boot-application-properties-sample-1.0.0.jar --spring.profiles.active=dev1
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.
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.
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
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.
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.
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.
das ist alles.
Recommended Posts