Risposte:
Ho appena chiesto ai Spring Cloudragazzi e ho pensato di condividere le informazioni che ho qui.
bootstrap.ymlè stato caricato prima application.yml.
In genere viene utilizzato per quanto segue:
spring.application.namee spring.cloud.config.server.git.uriall'internobootstrap.ymlencryption/decryptioninformazioniTecnicamente, bootstrap.ymlviene caricato da una molla principale ApplicationContext. Quel genitore ApplicationContextviene caricato prima di quello che utilizza application.yml.
bootstrap.yml?
bootstrap.yml o bootstrap.propertiesViene utilizzato / necessario solo se si utilizza Spring Cloud e la configurazione dell'applicazione è archiviata su un server di configurazione remoto (ad esempio Spring Cloud Config Server).
Dalla documentazione:
Un'applicazione Spring Cloud funziona creando un contesto "bootstrap", che è un contesto padre per l'applicazione principale. È pronto per il caricamento delle proprietà di configurazione da fonti esterne e anche per la decrittografia delle proprietà nei file di configurazione esterni locali.
Si noti che bootstrap.ymlo bootstrap.properties può contenere una configurazione aggiuntiva (ad es. Valori predefiniti) ma in genere è necessario inserire qui solo la configurazione bootstrap.
In genere contiene due proprietà:
spring.cloud.config.uri)spring.application.name)All'avvio, Spring Cloud effettua una chiamata HTTP al server di configurazione con il nome dell'applicazione e recupera la configurazione dell'applicazione.
application.yml o application.propertiesContiene la configurazione standard dell'applicazione - in genere la configurazione predefinita poiché qualsiasi configurazione recuperata durante il processo bootstrap sovrascriverà la configurazione qui definita.
Questa risposta è stata molto ben spiegata nel libro " Domande sui colloqui sui microservizi, per sviluppatori Java (Spring Boot, Spring Cloud, Cloud Native Applications) di Munish Chandel , Versione 1.30, 25.03.2018.
Il seguente contenuto è stato preso da questo libro e il merito totale di questa risposta va all'autore del libro, ovvero Munish Chandel
application.yml
Il file application.yml / application.properties è specifico delle applicazioni Spring Boot. A meno che non si cambi la posizione delle proprietà esterne di un'applicazione, l'avvio a molla caricherà sempre application.yml dalla seguente posizione:
/src/main/resources/application.yml
In questo file è possibile archiviare tutte le proprietà esterne per l'applicazione. Le proprietà comuni disponibili in qualsiasi progetto Spring Boot sono disponibili all'indirizzo: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html È possibile personalizzare queste proprietà come secondo le esigenze della tua applicazione. Il file di esempio è mostrato di seguito:
spring:
application:
name: foobar
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
server:
port: 9000
bootstrap.yml
bootstrap.yml è invece specifico per spring-cloud-config e viene caricato prima di application.yml
bootstrap.yml è necessario solo se si utilizza Spring Cloud e la configurazione del microservizio è archiviata su un Spring Cloud Config Server remoto.
Punti importanti su bootstrap.yml
spring.application.name: "nome-applicazione" spring.cloud.config.server.git.uri: "git-uri-config"
spring.application.name: spring.cloud.config.uri:
All'avvio, Spring Cloud effettua una chiamata HTTP (S) al server Spring Cloud Config con il nome dell'applicazione e recupera la configurazione dell'applicazione.
application.yml contiene la configurazione predefinita per il microservizio e qualsiasi configurazione recuperata (dal server di configurazione cloud) durante il processo di bootstrap sovrascriverà la configurazione definita in application.yml
Solo i miei 2 centesimi qui ..
Bootstrap.yml o Bootstrap.properties viene utilizzato per recuperare la configurazione da Spring Cloud Server.
Ad esempio, nel mio file Bootstrap.properties ho la seguente configurazione
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
All'avvio dell'applicazione, tenta di recuperare la configurazione per il servizio connettendosi a http: // localhost: 8888 e guarda Calculation-service.properties presente nel server Spring Cloud Config
È possibile convalidare lo stesso dai registri di Calcuation-Service quando lo si avvia
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
Bene, sono totalmente d'accordo con le risposte già esistenti su questo punto:
bootstrap.ymlviene utilizzato per salvare i parametri che indicano dove si trova la configurazione remota e viene creato il contesto dell'applicazione Bootstrap con queste configurazioni remote.In realtà, è anche in grado di memorizzare le proprietà normali allo stesso modo di quello che application.ymlfanno. Ma presta attenzione a questa cosa delicata:
bootstrap.yml, avranno una precedenza inferiore rispetto a quasi tutte le altre fonti di proprietà, incluso application.yml. Come descritto qui .Cerchiamo di chiarire, ci sono due tipi di proprietà relative a bootstrap.yml:
bootstrap.ymlper trovare il proprietario delle proprietà (un file system, un repository git o qualcos'altro) e le proprietà che otteniamo in questo modo hanno una precedenza elevata, quindi non possono essere ignorate dalla configurazione locale. Come descritto qui .bootstrap.yml. Come spiegato in precedenza, avranno una precedenza inferiore. Usali per impostare i valori predefiniti forse una buona idea.Quindi le differenze tra l'inserimento di una proprietà application.ymlo l' bootstrap.ymlavvio in primavera sono:
bootstrap.yml.application.ymlavrà una precedenza più alta.Bootstrap.yml viene utilizzato per recuperare la configurazione dal server. Può essere per un'applicazione cloud Spring o per altri. In genere sembra:
spring:
application:
name: "app-name"
cloud:
config:
uri: ${config.server:http://some-server-where-config-resides}
All'avvio dell'applicazione, tenta di connettersi al server specificato e di leggere la configurazione in base al profilo di primavera menzionato nella configurazione di esecuzione / debug.

Se il server non è raggiungibile, l'applicazione potrebbe anche non essere in grado di procedere oltre. Tuttavia, se le configurazioni corrispondenti al profilo sono presenti localmente, le configurazioni del server vengono sovrascritte.
Buon approccio:
Mantenere un profilo separato per locale ed eseguire l'app utilizzando profili diversi.
Un altro uso di bootstrap.yml è caricare la configurazione dalla configmap di kubernetes e dalle risorse segrete . L'applicazione deve importare la dipendenza spring-cloud-starter-kubernetes .
Come con Spring Cloud Config, questo deve avvenire durante la frase bootstrap.
Dai documenti:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
config:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a ConfigMap named c1 in namespace default-namespace
- name: c1
Quindi le proprietà memorizzate nella risorsa configmap con meta.name nome-predefinito possono essere referenziate esattamente come le proprietà in application.yml
E lo stesso processo si applica ai segreti:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
secrets:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a Secret named s1 in namespace default-namespace
- name: s1
Bootstrap.yml è il primo file caricato all'avvio dell'applicazione di avvio primaverile e application.property viene caricato all'avvio dell'applicazione. Quindi, continui, potrebbero essere le credenziali del tuo server di configurazione ecc., In bootstrap.yml che è richiesto durante il caricamento dell'applicazione e quindi in application.properties che conservi potrebbero essere URL del database ecc.
bootstrap.ymlè per quanto posso vedere specifico di [spring-cloud-config] ( cloud.spring.io/spring-cloud-config/… )) ed è la configurazione utilizzata per trovare la giusta configurazione. Quindi la configurazione probabilmente è stata caricata prima di application.properties/yaml