Odpowiedzi:
Właśnie zapytałem Spring Cloudfacetów i pomyślałem, że powinienem podzielić się informacjami, które tu mam.
bootstrap.ymljest ładowany wcześniej application.yml.
Zwykle jest używany do następujących celów:
spring.application.namei spring.cloud.config.server.git.uriwewnątrzbootstrap.ymlencryption/decryptioninformacjiTechnicznie bootstrap.ymljest ładowany przez nadrzędną sprężynę ApplicationContext. Ten rodzic ApplicationContextjest ładowany przed tym, który używa application.yml.
bootstrap.yml?
bootstrap.yml lub bootstrap.propertiesJest używany / potrzebny tylko, jeśli korzystasz z Spring Cloud, a konfiguracja aplikacji jest przechowywana na zdalnym serwerze konfiguracji (np. Spring Cloud Config Server).
Z dokumentacji:
Aplikacja Spring Cloud działa, tworząc kontekst „bootstrap”, który jest kontekstem nadrzędnym dla głównej aplikacji. Po wyjęciu z pudełka odpowiada za ładowanie właściwości konfiguracyjnych ze źródeł zewnętrznych , a także odszyfrowywanie właściwości w lokalnych zewnętrznych plikach konfiguracyjnych.
Zauważ, że bootstrap.ymllub bootstrap.properties może zawierać dodatkową konfigurację (np. Domyślne), ale generalnie wystarczy umieścić tutaj konfigurację bootstrap.
Zazwyczaj zawiera dwie właściwości:
spring.cloud.config.uri)spring.application.name)Po uruchomieniu Spring Cloud wykonuje połączenie HTTP do serwera konfiguracji z nazwą aplikacji i pobiera konfigurację tej aplikacji.
application.yml lub application.propertiesZawiera standardową konfigurację aplikacji - zazwyczaj konfigurację domyślną, ponieważ każda konfiguracja pobrana podczas procesu ładowania początkowego zastąpi zdefiniowaną tutaj konfigurację.
Ta odpowiedź jest bardzo pięknie opisane w książce " Microservices Wywiad pytania, Dla Java Developers (wiosna Boot, Spring chmura, Chmura natywnych aplikacji) przez Munish chandel , wersja 1.30, 25.03.2018.
Poniższa treść została zaczerpnięta z tej książki, a całkowite uznanie dla tej odpowiedzi należy do autora książki, tj. Munish Chandel
application.yml
Plik application.yml / application.properties jest specyficzny dla aplikacji Spring Boot. O ile nie zmienisz położenia zewnętrznych właściwości aplikacji, wiosenny rozruch zawsze ładuje application.yml z następującej lokalizacji:
/src/main/resources/application.yml
W tym pliku możesz zapisać wszystkie zewnętrzne właściwości aplikacji. Wspólne właściwości, które są dostępne w dowolnym projekcie Spring Boot, można znaleźć na stronie : https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Można dostosować te właściwości jako zgodnie z potrzebami aplikacji. Przykładowy plik pokazano poniżej:
spring:
application:
name: foobar
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
server:
port: 9000
bootstrap.yml
Z drugiej strony bootstrap.yml jest specyficzny dla konfiguracji spring-cloud-config i jest ładowany przed application.yml
Plik bootstrap.yml jest potrzebny tylko wtedy, gdy używasz Spring Cloud, a konfiguracja mikrousług jest przechowywana na zdalnym serwerze konfiguracji Spring Cloud.
Ważne uwagi na temat bootstrap.yml
spring.application.name: „nazwa aplikacji” spring.cloud.config.server.git.uri: "git-uri-config"
spring.application.name: spring.cloud.config.uri:
Po uruchomieniu Spring Cloud wykonuje połączenie HTTP (S) do serwera konfiguracji Spring Cloud z nazwą aplikacji i odzyskuje konfigurację tej aplikacji.
application.yml zawiera domyślną konfigurację mikrousługi, a każda konfiguracja pobrana (z serwera konfiguracji chmury) podczas procesu ładowania początkowego zastąpi konfigurację zdefiniowaną w application.yml
Tylko moje 2 centy tutaj ..
Bootstrap.yml lub Bootstrap.properties służy do pobierania konfiguracji z serwera Spring Cloud.
Na przykład w pliku My Bootstrap.properties mam następującą konfigurację
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
Po uruchomieniu aplikacji próbuje pobrać konfigurację usługi, łącząc się z http: // localhost: 8888 i patrzy na Calculation-service.properties obecnego na serwerze Spring Cloud Config
Możesz sprawdzić to samo z dzienników Calcuation-Service po uruchomieniu
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
Cóż, całkowicie zgadzam się z odpowiedziami, które już istnieją w tej kwestii:
bootstrap.ymlsłuży do zapisywania parametrów wskazujących, gdzie znajduje się zdalna konfiguracja i kontekst aplikacji rozruchowej jest tworzony za pomocą tych zdalnych konfiguracji.W rzeczywistości jest także w stanie przechowywać normalne właściwości tak samo jak co application.yml. Ale zwróć uwagę na tę podstępną rzecz:
bootstrap.yml, będą miały niższy priorytet niż prawie wszystkie inne źródła właściwości, w tym application.yml. Jak opisano tutaj .Wyjaśnijmy, istnieją dwa rodzaje właściwości związanych z bootstrap.yml:
bootstrap.ymlaby znaleźć właściciela właściwości (system plików, repozytorium git lub coś innego), a właściwości, które otrzymujemy w ten sposób, mają pierwszeństwo, więc nie można ich zastąpić konfiguracją lokalną. Jak opisano tutaj .bootstrap.yml. Jak wyjaśniono wcześniej, uzyskają niższy priorytet. Użyj ich, aby ustawić wartości domyślne, może to dobry pomysł.Różnice między umieszczaniem właściwości w application.ymllub bootstrap.ymlw wiosennym rozruchu są następujące:
bootstrap.yml.application.ymlbędzie miało wyższy priorytet.Bootstrap.yml służy do pobierania konfiguracji z serwera. Może to być dla aplikacji chmurowej Spring lub dla innych. Zazwyczaj wygląda to tak:
spring:
application:
name: "app-name"
cloud:
config:
uri: ${config.server:http://some-server-where-config-resides}
Po uruchomieniu aplikacja próbuje połączyć się z danym serwerem i odczytać konfigurację na podstawie profilu sprężynowego wspomnianego w konfiguracji uruchamiania / debugowania.

Jeśli serwer jest nieosiągalny, aplikacja może nawet nie być w stanie kontynuować. Jeśli jednak konfiguracje pasujące do profilu są dostępne lokalnie, konfiguracje serwera zostaną zastąpione.
Dobre podejscie:
Utrzymaj osobny profil dla lokalnego i uruchom aplikację przy użyciu różnych profili.
Innym zastosowaniem bootstrap.yml jest ładowanie konfiguracji z mapy konfiguracyjnej kubernetes i tajnych zasobów. Aplikacja musi zaimportować zależność spring-cloud-starter-kubernetes .
Podobnie jak w przypadku Spring Cloud Config, musi to mieć miejsce podczas frazy bootstrap.
Z dokumentów:
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
Tak więc właściwości przechowywane w zasobie configmap z meta.name nazwa-domyślna mogą być przywoływane tak samo jak właściwości w application.yml
Ten sam proces dotyczy tajemnic:
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 to pierwszy plik ładowany podczas uruchamiania aplikacji Spring Boot, a application.property jest ładowany podczas uruchamiania aplikacji. Tak więc możesz zachować, może to być poświadczenie serwera konfiguracji itp., W bootstrap.yml, który jest wymagany podczas ładowania aplikacji, a następnie w application.properties, które przechowujesz, może być adres URL bazy danych itp
bootstrap.ymljest, o ile widzę, specyficzny dla [spring-cloud-config] ( cloud.spring.io/spring-cloud-config/… )) i jest to konfiguracja używana do znalezienia właściwej konfiguracji. Więc konfiguracja jest prawdopodobnie ładowana przed application.properties/yaml