Configuration spécifique à l'environnement pour une application Web Spring?
Comment puis-je connaître l'environnement de déploiement d'une application web, par exemple, qu'il soit local, dev, qa ou de prod, etc. Est-il possible que je peux déterminer ce printemps contexte d'application fichier au moment de l'exécution?
source d'informationauteur Ritesh | 2011-06-08
Vous devez vous connecter pour publier un commentaire.
Ne pas ajouter de la logique de votre code de test de l'environnement, vous êtes en cours d'exécution - c'est une recette pour un désastre (ou au moins de la gravure d'un lot de huile de minuit en bas de la route).
Vous utilisez le Printemps, donc profitez-en. Utiliser l'injection de dépendance pour fournir de l'environnement-les paramètres spécifiques à votre code. E. g. si vous avez besoin d'appeler un service web avec différents paramètres de test et de production, faire quelque chose comme ceci:
Ensuite, utilisez le Printemps PropertyPlaceholderConfigurer (ou alternativement PropertyOverrideConfigurer) pour remplir cette propriété à partir d'un .fichier de propriétés, ou à partir d'un système JVM des biens de la sorte:
Maintenant créer deux (ou trois, ou quatre) des fichiers comme - un pour chacun des environnements différents.
Dans l'environnement de dev.propriétés:
Dans l'environnement de test.propriétés:
Maintenant le fichier de propriétés pour chaque environnement, renommez-le juste milieu.propriétés, et de le copier sur votre serveur d'application le répertoire lib ou tout autre endroit où il apparaîtra sur votre classpath de l'application. E. g. pour Tomcat:
Maintenant déployer votre application - le Printemps va remplacer la valeur "http://dev-server:8080/" lorsqu'il met en place votre point de terminaison de la propriété au moment de l'exécution.
Voir le Printemps documentation pour plus de détails sur la façon de charger les valeurs de propriété.
Il est intéressant de noter que Printemps 3.1 M1 introduit en charge par les profils. Ce qui sera probablement la dernière réponse à ce besoin. Donc gardez un oeil pour elle.
Pendant ce temps, personnellement, je fais exactement ce que Pavel décrit.
Nous le faisons dans notre application, mais pas dans le ressort de config.
Cours de l'application de démarrage (dans un contexte d'écouteur), nous lisons la machine du nom d'hôte et le magasin de la correspondance de prod,dev,qa info dans une variable statique.
Nous n'avons pas accès à la variable directement (si l'on peut), mais nous avons un printemps de service que les interfaces avec cette variable pour nous donner l'accès à notre serveur des informations sur l'environnement.
Un autre moyen serait de regarder le Système.getProperty(clé) méthode, qui est un pur java. Cependant, ce n'est probablement pas une bonne idée, étant donné que vous ne devriez pas vraiment de faire de l'environnement une logique de ce genre dans votre application.
Une autre méthode serait de configuration du serveur (configuration d'un autre contexte d'application fichier pour chaque environnement de serveur).
Printemps 3.1 est également d'apporter de nouvelles méthodes pour faire ce genre de chose "correctement" avec des fichiers de propriétés. Vous devriez jeter un oeil à la unifiée de gestion de la propriété blog. Il n'y a plus de détails dans la m1 annonce de publication.