La plupart des informations de configuration sont configurées dans application.properties, ce fichier peut-il donc être externe ? Bien sûr, cela est possible.
Définissez d'abord une propriété dans application.preperties :
demo.name = hello.01
Utilisation dans le contrôleur :
@Value("${demo.name}") private String demoName; @RequestMapping("/test") public String test(){ return this.demoName; }
Mettez le projet dans un package jar et démarrez-le en utilisant java -jar :
java -jar springboot-out-properties-0.0 .1 -SNAPSHOT.jar
La valeur lue à ce moment est : hello.01.
Copiez le fichier application.properties dans le projet et placez-le dans le même chemin que le package jar. Modifiez la valeur de la propriété en :
demo.name = hello.02
Utilisez ensuite la commande ci-dessus pour redémarrer et voir l'effet. . Surprise ou pas, Spring Boot est tellement génial. Le package jar peut être lu directement à partir du même chemin.
Si nous créons une nouvelle configuration sous le jar et y mettons application.properties, pouvons-nous l'identifier à l'aide de la commande ci-dessus ? La réponse est oui,
SpringApplication chargera les propriétés du fichier application.properties à l'emplacement suivant et l'ajoutera à l'environnement Spring :
sous-répertoire/config dans le répertoire actuel
répertoire racine classpath
Répertoire/config dans le chemin de classe
Répertoire actuel
Si un répertoire personnalisé, tel que conf, n'est pas reconnu pour le moment, vous pouvez utiliser --spring.config.location pour spécifier le chemin. La commande d'exécution est la suivante :
java -jar springboot-out-properties-0.0.1-SNAPSHOT.jar--spring.config.location=conf/application.properties
Bien sûr, vous pouvez également utiliser le chemin absolu pour spécifier :
java - jar springboot-out-properties-0.0.1-SNAPSHOT.jar--spring.config.location=/Users/linxiangxian/Downloads/conf/application.properties
Dans le projet, certaines configurations permettront de personnaliser le fichier de propriétés à utiliser, par exemple, définir demo.properties :
demo.nickname = hello.10 demo.weixin = springboot
Utilisez @PropertySource pour spécifier le fichier de configuration :
/** * @PropertySource的例子 * <p> */ @Configuration @ConfigurationProperties(prefix = "demo") @PropertySource(value = {"classpath:demo.properties"}) public class DemoProperties { private String nickname; private String weixin; public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getWeixin() { return weixin; } public void setWeixin(String weixin) { this.weixin = weixin; } @Override public String toString() { return "DemoProperties{" + "nickname='" + nickname + '\'' + ", weixin='" + weixin + '\'' + '}'; } }
Ensuite, vous pouvez accéder à ce fichier de configuration à ce moment, transformez-le en package jar et exécutez la commande :
java -jar springboot-out-properties-0.0.1-SNAPSHOT.jar
La valeur renvoyée à ce moment est : hello.10
Mettez demo.properties dans le même chemin que le package jar et modifiez la valeur demo.name en hello.11, exécutez la commande ci-dessus, Barbie Q, le résultat est toujours hello.10, indiquant que Spring Boot ne peut pas trouver le fichier de propriétés personnalisé de l'extérieur .
Alors, que pouvons-nous faire pour résoudre ce problème ?
C'est très simple. @PropertySource prend en charge plusieurs configurations de plusieurs chemins, qui peuvent être configurées comme ceci :
@PropertySource(value = {"classpath:demo.properties","file:./demo.properties"},ignoreResourceNotFound = true)
Lorsque nous configurons plusieurs chemins et que les fichiers de configuration dans plusieurs chemins existent, SpringBoot les chargera tous et couvrira le même contenu. . Ainsi, lorsque nos informations de configuration ne distinguent que les chemins externes et internes et que le contenu est exactement le même, écrivez simplement le chemin du fichier à la fin. Lorsque nous démarrons localement, parce que le chemin du fichier n'existe pas, le chemin de classe sera chargé ; lorsque le fichier jar sera démarré, le chemin du fichier écrasera le contenu du chemin du chemin de classe ;
ignoreResourceNotFound = true doit être ajouté, sinon une erreur se produira ; être signalé s’il est introuvable. Après l'ajout, les fichiers de configuration introuvables seront ignorés.
À ce stade, placez simplement le fichier de configuration demo.properties au même niveau que le package jar.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!