Quelle est la différence entre mettre une propriété sur application.yml ou bootstrap.yml dans Spring Boot? Dans le cas logging.config, l'application fonctionne différemment.
251
Quelle est la différence entre mettre une propriété sur application.yml ou bootstrap.yml dans Spring Boot? Dans le cas logging.config, l'application fonctionne différemment.
bootstrap.yml
est autant que je peux voir spécifique à [spring-cloud-config
] ( cloud.spring.io/spring-cloud-config/… )) et c'est la configuration utilisée pour trouver la bonne configuration. Donc, la configuration est probablement chargée avant application.properties/yamlRéponses:
Je viens de demander aux
Spring Cloud
gars et j'ai pensé que je devrais partager les informations que j'ai ici.bootstrap.yml
est chargé avantapplication.yml
.Il est généralement utilisé pour les éléments suivants:
spring.application.name
et à l'spring.cloud.config.server.git.uri
intérieurbootstrap.yml
encryption/decryption
informationsTechniquement,
bootstrap.yml
est chargé par un parent parentApplicationContext
. Ce parentApplicationContext
est chargé avant celui qui l'utiliseapplication.yml
.la source
bootstrap.yml
?bootstrap.yml
oubootstrap.properties
Il n'est utilisé / nécessaire que si vous utilisez Spring Cloud et que la configuration de votre application est stockée sur un serveur de configuration distant (par exemple, Spring Cloud Config Server).
De la documentation:
Notez que le
bootstrap.yml
oubootstrap.properties
peut contenir une configuration supplémentaire (par exemple par défaut) mais généralement vous n'avez qu'à mettre ici la configuration de démarrage.Il contient généralement deux propriétés:
spring.cloud.config.uri
)spring.application.name
)Au démarrage, Spring Cloud fait un appel HTTP au serveur de configuration avec le nom de l'application et récupère la configuration de cette application.
application.yml
ouapplication.properties
Contient la configuration d'application standard - généralement la configuration par défaut car toute configuration récupérée pendant le processus d'amorçage remplacera la configuration définie ici.
la source
Cette réponse a été très joliment expliquée dans le livre " Microservices Interview Questions, For Java Developers (Spring Boot, Spring Cloud, Cloud Native Applications)" par Munish Chandel , Version 1.30, 25.03.2018.
application.yml
Le fichier application.yml / application.properties est spécifique aux applications Spring Boot. À moins que vous ne changiez l'emplacement des propriétés externes d'une application, Spring Boot chargera toujours application.yml à partir de l'emplacement suivant:
Vous pouvez stocker toutes les propriétés externes de votre application dans ce fichier. Les propriétés communes disponibles dans n'importe quel projet Spring Boot se trouvent à l' adresse : https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Vous pouvez personnaliser ces propriétés comme selon vos besoins d'application. Un exemple de fichier est présenté ci-dessous:
bootstrap.yml
bootstrap.yml d'autre part est spécifique à spring-cloud-config et est chargé avant le fichier application.yml
bootstrap.yml n'est nécessaire que si vous utilisez Spring Cloud et que votre configuration de microservice est stockée sur un serveur Spring Cloud Config Server distant.
Points importants sur bootstrap.yml
Au démarrage, Spring Cloud effectue un appel HTTP (S) vers le serveur de configuration Spring Cloud avec le nom de l'application et récupère la configuration de cette application.
application.yml contient la configuration par défaut du microservice et toute configuration récupérée (à partir du serveur cloud config) pendant le processus d'amorçage remplacera la configuration définie dans application.yml
la source
Juste mes 2 cents ici ..
Bootstrap.yml ou Bootstrap.properties est utilisé pour récupérer la configuration à partir de Spring Cloud Server.
Par exemple, dans mon fichier Bootstrap.properties, j'ai la configuration suivante
Au démarrage de l'application, il essaie de récupérer la configuration du service en se connectant à http: // localhost: 8888 et examine Calculation-service.properties présent dans le serveur Spring Cloud Config
Vous pouvez valider la même chose à partir des journaux de Calcuation-Service lorsque vous le démarrez
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
la source
Eh bien, je suis totalement d'accord avec les réponses qui existent déjà sur ce point:
bootstrap.yml
est utilisé pour enregistrer les paramètres qui indiquent où se trouve la configuration à distance et le contexte d'application Bootstrap est créé avec ces configurations à distance.En fait, il est également capable de stocker des propriétés normales tout comme quoi
application.yml
. Mais faites attention à cette chose délicate:bootstrap.yml
, elles auront une priorité inférieure à presque toutes les autres sources de propriété, y compris application.yml. Comme décrit ici .Soyons clairs, il existe deux types de propriétés liées à
bootstrap.yml
:bootstrap.yml
pour trouver le détenteur des propriétés (un système de fichiers, un référentiel git ou autre), et les propriétés que nous obtenons de cette manière ont une priorité élevée, de sorte qu'elles ne peuvent pas être remplacées par la configuration locale. Comme décrit ici .bootstrap.yml
. Comme expliqué précédemment, ils auront une priorité plus faible. Utilisez-les pour définir les valeurs par défaut, peut-être une bonne idée.Ainsi, les différences entre mettre une propriété sur
application.yml
oubootstrap.yml
dans une botte de printemps sont:bootstrap.yml
.application.yml
aura une priorité plus élevée.la source
Bootstrap.yml est utilisé pour récupérer la configuration du serveur. Cela peut être pour une application cloud Spring ou pour d'autres. Il ressemble généralement à:
Lorsque nous démarrons l'application, il essaie de se connecter au serveur donné et de lire la configuration basée sur le profil Spring mentionné dans la configuration run / debug.
Si le serveur est inaccessible, l'application peut même ne pas pouvoir continuer. Cependant, si des configurations correspondant au profil sont présentes localement, les configurations de serveur sont remplacées.
Bonne approche:
Gérez un profil distinct pour le local et exécutez l'application à l'aide de différents profils.
la source
Une autre utilisation de bootstrap.yml est de charger la configuration à partir de kubernetes configmap et de ressources secrètes . L'application doit importer la dépendance Spring-Cloud-Starter-Kubernetes .
Comme pour Spring Cloud Config, cela doit avoir lieu pendant la phrase d'amorçage.
De la documentation:
Ainsi, les propriétés stockées dans la ressource configmap avec meta.name default-name peuvent être référencées de la même manière que les propriétés dans application.yml
Et le même processus s'applique aux secrets:
la source
Bootstrap.yml est le premier fichier chargé au démarrage de l'application de démarrage printanier et application.property est chargé au démarrage de l'application. Ainsi, vous conservez, peut-être les informations d'identification de votre serveur de configuration, etc., dans bootstrap.yml qui est requis lors du chargement de l'application, puis dans application.properties que vous conservez peut être l'URL de la base de données, etc.
la source