J'essaie de charger un fichier de propriétés externe dans mon application de démarrage printanier . Au départ, j'ai utilisé @PropertySource dans la classe de configuration . Mais je souhaite maintenant supprimer cette annotation afin que la classe ne dépende pas de l'emplacement .so j'ai essayé d'utiliser:
Java -jar my-boot-ws.war --SPRING_CONFIG_NAME=file:///Users/TMP/resources/
basé sur ceci http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html documentation mais j'obtiens l'erreur suivante:
Caused by: Java.lang.IllegalArgumentException: Could not resolve placeholder
l’utilisation de l’annotation fonctionne bien, mais j’aimerais vraiment changer de sujet. Toute aide en la matière serait formidable.
Merci
****** CORRECTION *******
Désolé, erreur de copier-coller, la commande ci-dessus était supposée être:
Java -jar my-boot-ws.war --spring.config.location=file:///Users/TMP/resources/
Je n'essaye pas de changer le nom du fichier de configuration mais d'ajouter un emplacement supplémentaire . Comme expliqué ici:
Si spring.config.location contient des répertoires (par opposition aux fichiers) ils doivent se terminer par/(et seront ajoutés avec les noms générés de spring.config.name avant d'être chargés).
J'ai interprété ceci comme indiquant que le fichier $ {spring.application.name} .properties serait chargé à partir de --spring.config.location transmis à partir de la ligne de commande.
Après quelques recherches supplémentaires, j'ai trouvé ceci Spring Boot et plusieurs fichiers de configuration externes indiquant que l'utilisation suivante est correcte:
Java -jar my-boot-ws.war --spring.config.location=file:///Users/TMP/resources/myFile.properties
J'avais l'impression que --spring.config.location chargerait d'autres fichiers de propriétés dans le répertoire spécifié. selon le post sur le lien que j'ai mentionné, ce n'est pas le cas. sur la base du lien si le répertoire est spécifié, c’est à cet endroit que l’application.properties est recherchée. mais encore une fois la documentation ici http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html semble insinuer que l'application de démarrage de printemps ressemblera sur le chemin de classe en premier et, si disponible, saisissez le nom de l'application pour obtenir des fichiers de propriétés supplémentaires basés sur ce nom.
cependant, une fois que j'ai spécifié un nom de fichier, tout a bien fonctionné, donc je me suis trompé.
En ligne de commande, vous devez utiliser la propriété ci-dessous pour mentionner un fichier de configuration de démarrage supplémentaire:
--spring.config.location="file:/path/to/application.properties"
Une alternative serait:
-Dspring.config.location="file:/path/to/application.properties"
Notez que les caractères sont en minuscule et que le séparateur de mots est un point. .
Sinon, vous pouvez utiliser une variable d'environnement avec la clé déjà utilisée:
Dans un système * nix:
export SPRING_CONFIG_NAME=file:/path/to/application.properties
Sous Windows:
set SPRING_CONFIG_NAME=file:/path/to/application.properties
Ce n'est peut-être pas un problème commun, mais je l'ai affronté. Vous devez également avoir un application.properties
dans votre chemin de classe même lorsque vous le remplacez par --spring.config.name
(le mien dans gitignore en raison d’informations sensibles).
1) Makesure args passe à l'intérieur de la méthode run
public class GemFireTestLoaderApplication {
public static void main(String[] args) {
SpringApplication.run(GemFireTestLoaderApplication.class, args);
}
}
2) Si vous avez configuré en commentaire XML ou supprimez d'abord
<!-- <context:property-placeholder location="classpath:config.properties" /> -->
<!-- <context:property-placeholder location="file:/data/xxx/vaquarkhan/dataLoader/config.properties" /> -->
Commande suivante que vous pouvez utiliser pour transmettre le nom de la propriété
3.1)
Java -jar GemfireTest-0.0.1-SNAPSHOT.jar --spring.config.location=file:///C:/data/xxx/vaquarkhan/dataLoader/test/config.properties
3.2)
Java -jar GemfireTest-0.0.1-SNAPSHOT.jar --spring.config.location=file:///C:/data/xxx/vaquarkhan/dataLoader/test/config.properties
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html