Fichier de propriétés du ressort à l'extérieur du pot

1. Vue d'ensemble

Les fichiers de propriétés sont une méthode courante que nous pouvons utiliser pour stocker des informations spécifiques au projet. Idéalement, nous devrions le garder à l'extérieur de l'emballage pour pouvoir apporter des modifications à la configuration au fur et à mesure des besoins.

Dans ce rapide didacticiel, nous examinerons différentes façons de charger le fichier de propriétés à partir d'un emplacement en dehors du pot dans une application Spring Boot.

2. Utilisation de l'emplacement par défaut

Par convention, Spring Boot recherche un fichier de configuration externalisé - application. properties ou application.yml - dans 4 emplacements prédéterminés dans l'ordre de priorité suivant:

  • Un sous-répertoire / config du répertoire courant
  • Le répertoire courant
  • Un package classpath / config
  • La racine du chemin de classe

Par conséquent, une propriété définie dans application.properties et placée dans le sous-répertoire / config du répertoire courant sera chargée . Cela remplacera également les propriétés d'autres emplacements en cas de collision.

3. Utilisation de la ligne de commande

Si la convention ci-dessus ne fonctionne pas pour nous, nous pouvons également configurer l'emplacement directement dans la ligne de commande:

java -jar app.jar --spring.config.location=file:///Users/home/config/jdbc.properties

Nous pouvons également passer un emplacement de dossier où l'application recherchera le fichier:

java -jar app.jar --spring.config.name=application,jdbc --spring.config.location=file:///Users/home/config

Et, une approche alternative consiste à exécuter l'application Spring Boot via le plugin Maven. Là, nous pouvons utiliser un paramètre -D :

mvn spring-boot:run -Dspring.config.location="file:///Users/home/jdbc.properties"

4. Utilisation des variables d'environnement

Ou, disons que nous ne pouvons pas modifier la commande de démarrage. Ce qui est génial, c'est que Spring Boot lira également les variables d'environnement SPRING_CONFIG_NAME et SPRING_CONFIG_LOCATION :

export SPRING_CONFIG_NAME=application,jdbc export SPRING_CONFIG_LOCATION=file:///Users/home/config java -jar app.jar

Notez que le fichier par défaut sera toujours chargé. Mais en cas de collision de propriétés, le fichier de propriétés spécifique à l'environnement est prioritaire.

5. Par programmation

Ou, si nous voulons un accès par programme, nous pouvons enregistrer un bean PropertySourcesPlaceholderConfigurer :

public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer(); properties.setLocation(new FileSystemResource("/Users/home/conf.properties")); properties.setIgnoreResourceNotFound(false); return properties; }

Ici, nous avons utilisé PropertySourcesPlaceholderConfigurer pour charger les propriétés à partir d'un emplacement personnalisé.

6. Exclusion d'un fichier du Fat Jar

Le plugin Maven Boot inclura automatiquement tous les fichiers du répertoire src / main / resources dans le package jar.

Si nous ne voulons pas qu'un fichier fasse partie du jar, alors nous pouvons une configuration simple pour l'exclure:

   src/main/resources true  **/conf.properties    

Dans cet exemple, nous avons exclu le fichier conf.properties d'être inclus dans le fichier jar résultant.

7. Conclusion

Comme nous pouvons le voir, le framework Spring Boot lui-même prend en charge la configuration externalisée pour nous.

Souvent, nous devons simplement placer les valeurs de propriété dans les bons fichiers et emplacements, mais nous pouvons également utiliser l'API Java de Spring pour plus de contrôle.

Comme toujours, le code source complet des exemples est disponible à l'adresse over sur GitHub.