web-dev-qa-db-fra.com

Ordre de priorité entre le fichier de propriétés, le fichier YAML et les arguments de ligne de commande dans Spring Boot

J'utilise application.properties fichiers depuis longtemps dans mon application Spring. Mais récemment, je suis tombé sur application.yaml des dossiers. Quel est le ordre de priorité parmi les trois et l'avantage (s'il y en a un) d'utiliser l'individu.

Je sais que cela pourrait être une question stupide. mais je suis confus avec leurs usages.

12
MAC

L'ordre des propriétés de résolution de la propriété Spring est décrit ici .

Utilisation de application.properties et application.yaml n'est pas attendu. Utilisez un format ou l'autre mais pas les deux. Celui que vous utilisez sera traité à la position 12 ou 13 (selon que le fichier est empaqueté dans le JAR applicaiotn ou non) dans l'ordre de priorité des propriétés.

Y compris un extrait du lien ci-dessus ici pour éviter la pourriture des liens ...

Spring Boot utilise un ordre PropertySource très particulier qui est conçu pour permettre une substitution sensible des valeurs. Les propriétés sont considérées dans l'ordre suivant:

  1. Propriétés des paramètres globaux de Devtools sur votre répertoire personnel (~/.spring-boot-devtools.properties lorsque devtools est actif).
  2. @TestPropertySource annotations sur vos tests.
  3. @ SpringBootTest # attribut d'annotation de propriétés sur vos tests.
  4. Arguments de ligne de commande.
  5. Propriétés de SPRING_APPLICATION_JSON (JSON en ligne incorporé dans une variable d'environnement ou une propriété système)
  6. Paramètres d'initialisation ServletConfig.
  7. Paramètres d'initialisation ServletContext.
  8. Attributs JNDI de Java: comp/env.
  9. Propriétés du système Java (System.getProperties ()).
  10. Variables d'environnement OS.
  11. Un RandomValuePropertySource qui n'a que des propriétés dans random. *.
  12. Propriétés d'application spécifiques au profil en dehors de votre pot emballé (application- {profile} .properties et variantes YAML)
  13. Propriétés d'application spécifiques au profil empaquetées dans votre pot (application- {profile} .properties et variantes YAML)
  14. Propriétés d'application en dehors de votre pot emballé (application.properties et variantes YAML).
  15. Propriétés d'application empaquetées à l'intérieur de votre pot (application.properties et variantes YAML).
  16. Annotations @PropertySource sur vos classes @Configuration.
  17. Propriétés par défaut (spécifiées à l'aide de SpringApplication.setDefaultProperties).
17
glytching

En termes simples,

si vous avez yaml et le fichier de propriétés à la fois et la même clé dans les deux, alors Spring Boot cherchera d'abord dans les propriétés et s'il n'est pas trouvé, ira à yaml.

4
spandey15