Configuration externe pour le printemps-démarrage de l'application
J'ai un printemps-application de démarrage qui je veux courir avec fichier de configuration externe.
Quand je le lance que le pot (avec des conteneur de servlet), tout va bien.
Mais je veux l'exécuter en vertu de l'externe conteneur de servlet (Tomcat) et ici j'ai un problème avec la configuration externe. J'ai essayé un @PropertySource, mais dans ce cas, l'application est uniquement les propriétés absentes dans la guerre de fichier de configuration: configuration externe ne modifie pas de configuration interne.
Donc, la question: comment puis-je configurer configuration externe qui remplacera l'intérieur de configuration?
Vous devez vous connecter pour publier un commentaire.
Vous êtes probablement à l'aide de configuration externe sous la forme de
application.properties
dans le répertoire courant, lorsque vous exécutez votre application comme un pot. Cependant, "répertoire courant" n'est pas très utile lors du déploiement d'une guerre dans un tomcat. Même si vous découvrez ce que le répertoire courant est, c'est probablement le même endroit pour toutes les applications en cours d'exécution dans tomcat, de sorte que lorsque vous utilisez plus d'une application, cela ne va pas très bien fonctionner.Ce que nous faisons ici est celle de déclarer deux
PropertySources
sur notre application:internal.properties
contient "intégrée" des valeurs par défaut pour les propriétés. La deuxièmePropertySource
est un fichier contenant la configuration externe. Notez comment le nom du fichier est lui-même une propriété.Nous nous définissons à l'extérieur dans les
Context
élément de notre application (tomcat):Cela vous permet d'avoir de multiples applications en cours d'exécution dans tomcat, chaque application en utilisant son propre externe fichier de propriétés. Vous pouvez même avoir plusieurs instances de la même application en cours d'exécution avec des propriétés différentes.
Externaliser le Printemps de Démarrage de l'application.propriétés lors du déploiement d'une guerre de fichier, vous pouvez définir
spring.config.location
au début quand le Printemps application de Démarrage est configuré:Pour plus de détails, consultez cette solution.
The default search path classpath:,classpath:/config,file:,file:config/ is always used, irrespective of the value of spring.config.location. This search path is ordered from lowest to highest precedence (file:config/ wins). If you do specify your own locations, they take precedence over all of the default locations and use the same lowest to highest precedence ordering. In that way you can set up default values for your application in application.properties (or whatever other basename you choose with spring.config.name) and override it at runtime with a different file, keeping the defaults.
Printemps de Démarrage offre de nombreuses façons pour spécifier l'emplacement de vos propriétés, ce n'est pas nécessaire de modifier vos sources.
Yo peut définir la printemps.config.emplacement valeur par exemple:
Dans votre
tomcat/conf/Catalina/<host>
contexte descripteurs:Comme un paramètre de JVM dans votre tomcat
setenv.sh
fichier:Comme un
SPRING_CONFIG_LOCATION
variable d'environnement.Vous pouvez ajouter des fichiers de configuration du dossier de set Classpath ligne de catalina.chauve-souris, catalina.sh(dont l'un si vous voulez utiliser.) ou vous pouvez ajouter à setenv.bat/sh fichier. Vos fichiers de configuration seront ajoutés à la guerre classpath.
Par Exemple;
Dans Windows env.