web-dev-qa-db-fra.com

Définition de la variable de profil de ressort

J'ai deux profils Spring: dev et test. Je souhaite définir le profil actif dans l'environnement du serveur. Je ne souhaite pas le définir dans mon code afin que, quel que soit le déploiement de mon application, le profil est chargé en fonction du profil sur le serveur. Comment puis je faire ça?

58
Maheshwaran K

Vous pouvez simplement définir une propriété système sur le serveur comme suit ...

-Dspring.profiles.active=test

Edit: Pour ajouter ceci à Tomcat dans Eclipse, sélectionnez Run -> Run Configurations et choisissez votre configuration d’exécution Tomcat. Cliquez sur l'onglet Arguments et ajoutez -Dspring.profiles.active = test à la fin de VM arguments. Une autre solution serait d’ajouter la propriété à votre catalina.properties dans votre projet Servers, mais si vous l’ajoutez, omettez le -D.

Edit: Pour une utilisation avec Spring Boot, vous avez un choix supplémentaire. Vous pouvez passer la propriété en tant qu'argument de programme si vous la préférez par deux tirets.

Voici deux exemples utilisant un fichier jar exécutable Spring Boot ...

propriété système

[user@Host ~]$ Java -jar -Dspring.profiles.active=test myproject.jar

argument du programme

[user@Host ~]$ Java -jar myproject.jar --spring.profiles.active=test
99
hyness

Il y a au moins deux façons de le faire:

  1. définition du paramètre de contexte dans web.xml - qui coupe l'instruction "un package pour tous les environnements". Je ne recommande pas ça

  2. définition de la propriété système -Dspring.profiles.active=your-active-profile

Je crois que définir la propriété du système est une bien meilleure approche. Alors, comment définir une propriété système pour Tomcat? Sur Internet, je pourrais trouver de nombreux conseils tels que "modify catalina.sh", car vous ne trouverez aucun fichier de configuration permettant de faire ce genre de choses. Modifier catalina.sh est une solution sale et non maintenable. Il y a une meilleure façon de le faire.

Il suffit de créer le fichier setenv.sh dans le répertoire bin de Tomcat avec le contenu suivant:

Java_OPTS="$Java_OPTS -Dspring.profiles.active=dev"

et il sera chargé automatiquement pendant le démarrage ou l'exécution de catalina.sh.

Voici un blog décrivant la solution ci-dessus. La section des commentaires est intéressante car elle parle de plus de détails.

25
Nilesh

Pour Eclipse, définissez -Dspring.profiles.active La variable dans les arguments VM ferait l'affaire).

Aller à

Clic droit sur Projet -> Exécuter en tant que -> Exécuter les configurations -> Arguments

Et ajoutez votre -Dspring.profiles.active=dev dans les arguments de la VM

4
Abdullah Khan

comme variable système:

Windows: Démarrer -> tapez "envi", sélectionnez les variables d’environnement et ajoutez un nouveau: Name: spring_profiles_active Value: dev (ou quel que soit le vôtre)

Linux: ajoute la ligne suivante à/etc/environment sous PATH:

spring_profiles_active=prod (ou quel que soit le profil)

alors aussi export spring_profiles_active=prod donc vous l'avez dans le runtime maintenant.

3
R.S

Pour Tomcat 8:

Linux:

Créez setenv.sh et mettez-le à jour avec les éléments suivants:

export SPRING_PROFILES_ACTIVE = dev

Les fenêtres:

Créez setenv.bat et mettez-le à jour avec les éléments suivants:

set SPRING_PROFILES_ACTIVE = dev

3
Ram Pratap