Jaka jest różnica między umieszczeniem właściwości w application.yml lub bootstrap.yml w wiosennym rozruchu? W przypadku logowania.config aplikacja działa inaczej.
251
Jaka jest różnica między umieszczeniem właściwości w application.yml lub bootstrap.yml w wiosennym rozruchu? W przypadku logowania.config aplikacja działa inaczej.
bootstrap.yml
jest, 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/yamlOdpowiedzi:
Właśnie zapytałem
Spring Cloud
facetów i pomyślałem, że powinienem podzielić się informacjami, które tu mam.bootstrap.yml
jest ładowany wcześniejapplication.yml
.Zwykle jest używany do następujących celów:
spring.application.name
ispring.cloud.config.server.git.uri
wewnątrzbootstrap.yml
encryption/decryption
informacjiTechnicznie
bootstrap.yml
jest ładowany przez nadrzędną sprężynęApplicationContext
. Ten rodzicApplicationContext
jest ładowany przed tym, który używaapplication.yml
.źródło
bootstrap.yml
?bootstrap.yml
lubbootstrap.properties
Jest 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:
Zauważ, że
bootstrap.yml
lubbootstrap.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
lubapplication.properties
Zawiera standardową konfigurację aplikacji - zazwyczaj konfigurację domyślną, ponieważ każda konfiguracja pobrana podczas procesu ładowania początkowego zastąpi zdefiniowaną tutaj konfigurację.
źródło
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.
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:
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:
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
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
źródło
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ę
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
źródło
Cóż, całkowicie zgadzam się z odpowiedziami, które już istnieją w tej kwestii:
bootstrap.yml
sł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.yml
aby 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.yml
lubbootstrap.yml
w wiosennym rozruchu są następujące:bootstrap.yml
.application.yml
będzie miało wyższy priorytet.źródło
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:
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.
źródło
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:
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:
źródło
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
źródło