[JAVA] Diverses applications de commutation.properties pour chaque environnement au démarrage de Spring Boot

Chose que tu veux faire

Généralement, la configuration autour de application.properties de Spring Boot est la suivante.

無題.png

Avec cette configuration, essayez de changer application.properties pour chaque environnement au démarrage de Spring Boot. Puisqu'il existe plusieurs méthodes de réglage, quatre sont présentées ici.

1. Définissez le profil dans l'argument de démarrage

Il existe les deux méthodes suivantes pour définir l'argument de démarrage.

1. Arguments de ligne de commande
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

cependant, https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html Comme vous pouvez le voir, la priorité est plus élevée pour les arguments de ligne de commande, donc si vous commencez avec les deux paramètres comme indiqué ci-dessous,

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

Propriétés du système Java (System.getProperties ()) - Dspring.profiles.active = dev1 ne pas, Arguments de ligne de commande --spring.profiles.active = dev2

Notez que c'est adopté (écrasé).

2. Paramètres de profil dans les variables d'environnement du système d'exploitation

Spring Boot charge la variable d'environnement "SPRING_PROFILES_ACTIVE" au démarrage et la définit comme profil. Par conséquent, si vous définissez à l'avance "SPRING_PROFILES_ACTIVE" dans la variable d'environnement OS, le profil qui y est défini sera adopté.

Paramètres Windows.

1.png

Paramètres Linux.

.


export SPRING_PROFILES_ACTIVE=dev1

Avec la définition ci-dessus, le profil dev1 est chargé au démarrage de Spring Boot et "application-dev1.properties" est adopté. Ce qui suit est la sortie de la console à ce moment-là. En bas, "Les profils suivants sont actifs: dev1" est affiché, et vous pouvez voir que dev1 est actif.

console(Extrait).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. Paramètres de profil dans JNDI sur le serveur AP

Dans le cas où l'application créée par Spring Boot est définie sur WAR et déployée sur un autre serveur AP pour fonctionner, JNDI du serveur AP le définira comme profil. Voici un exemple de configuration lors de l'utilisation de Tomcat.

Défini dans Tomcat context.xml

context.xml


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

Avec la définition ci-dessus, un profil appelé dev2 est chargé au démarrage de Tomcat et "application-dev2.properties" est adopté. Ce qui suit est la sortie de la console à ce moment-là. En bas, "Les profils suivants sont actifs: dev2" est affiché et vous pouvez voir que dev2 est actif.

2.png

4. Définissez le profil comme variable d'environnement dans startup.bat (sh) du serveur AP

Pour Tomcat, startup.bat (sh), catalina.bat (sh), etc.

startup.bat


set "SPRING_PROFILES_ACTIVE=dev2"

startup.sh


export SPRING_PROFILES_ACTIVE=dev2

Il est également possible de spécifier un profil dans la variable d'environnement "SPRING_PROFILES_ACTIVE" comme dans. Dans ce cas, dans context.xml,

context.xml


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

S'il est défini comme, ce profil (dev3 défini dans context.xml) est prioritaire.

référence

Changer application.properties à inclure dans WAR avec Spring Boot au moment de la construction pour chaque environnement

c'est tout.

Recommended Posts

Diverses applications de commutation.properties pour chaque environnement au démarrage de Spring Boot
Changez la cible d'injection pour chaque environnement avec Spring Boot 2
Remarques sur les annotations lors de l'écriture de tests pour Spring Boot
Environnement de développement-développement Spring Boot-
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
[Spring Boot] Construction de l'environnement (macOS)
Construction de l'environnement Docker × Spring Boot
Créer un environnement Spring pour Android 2.0.0
Spring Boot pour l'apprentissage des annotations
Mémorandum lorsque Spring Boot 1.5.10 → Spring Boot 2.0.0
Spring Boot pour la première fois
Annotations fréquentes pour les tests Spring Boot
Fonction de profil Spring et application Spring Boot.
Utiliser DBUnit pour le test Spring Boot
Résolvez les pointeurs nuls pour diverses sessions lors des tests MVC de Spring Boot.
Gérer les variables d'environnement système dans Spring application.properties
L'histoire de la transition de Spring Boot 1.5 à 2.1
Construction de l'environnement de développement Java Spring Boot + Docker
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
Essayez Spring Boot 1 (Construction de l'environnement ~ Démarrage de Tomcat)
Erreur Javaw.exe lors du démarrage de Spring Boot (STS)
[Résolution d'erreur] Se produit lors de la tentative de création d'un environnement pour le printemps avec docker