web-dev-qa-db-fra.com

Comment ajouter plusieurs fichiers application.properties dans spring-boot?

J'ai une application de démarrage Spring qui est divisée en plusieurs modules . Le module principal exécute l'application et a un fichier application.properties dans le dossier des ressources. Je me demande si je peux ajouter un autre fichier de propriétés dans un sous-module pour séparer les propriétés appartenant à ce module et comment le faire fonctionner (car ce n'est pas le cas).

+main_module
  +src
    +main
      +Java
        +my/package/Application.Java
        +resources/application.properties
+support_module
  +src
    +main
      +Java
        +resources/application.properties

Donc, c'est la situation actuelle. Clairement, le fichier de propriétés dans le module support_module n'est pas lu, ce qui provoque une NoSuchBeanDefinitionException, alors que si je mets le contenu dans l'autre fichier de propriétés, tout fonctionne correctement.

23
mat_boy

Ce que vous essayez de faire ne fonctionnera pas avec Maven ou Gradle. La raison en est que lorsque l'artefact (le fichier jar probablement utilisé depuis que vous utilisez Spring Boot) est créé, il ne reste qu'un fichier application.properties à la racine.

Je vous suggère de changer le nom du fichier de propriétés sur le module de support, puis de configurer Spring Boot pour rechercher également ce fichier (consultez this ou this answer pour les pointeurs), ou utilisez une sorte de tâche de fusion pour votre outil de construction (quelque chose comme this peut-être)

19
geoand

Vous pouvez également faire référence à un emplacement explicite à l'aide de la propriété d'environnement spring.config.location (liste d'emplacement de répertoire ou chemins d'accès aux fichiers séparés par des virgules).

$ Java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

Pour plus d'informations cliquez ici

5
srsajid

Spring Boot lit les fichiers de propriétés dans l'ordre suivant. (de Spring Boot en action)

  1. En externe, dans un sous-répertoire/config du répertoire à partir duquel l'application est exécutée
  2. En externe, dans le répertoire à partir duquel l'application est exécutée
  3. En interne, dans un paquet nommé «config»
  4. En interne, à la racine du classpath

Donc, placer application.properties dans un sous-dossier config lui donnera une priorité plus élevée. Dans la configuration suivante, le application.properties à partir de support_module sera prioritaire. Vous pouvez ajouter des valeurs par défaut communes dans application.properties et les remplacer dans des modules individuels en plaçant le fichier de configuration dans config/application.properties.

+main_module
  +src
    +main
      +Java
        +my/package/Application.Java
        +resources/application.properties
+support_module
  +src
    +main
      +Java
        +resources/config/application.properties
0
zeronone