Was ist der Unterschied zwischen dem Einfügen einer Eigenschaft in application.yml oder bootstrap.yml im Frühjahrsstart? Im Fall logging.config funktioniert die Anwendung anders.
250
Was ist der Unterschied zwischen dem Einfügen einer Eigenschaft in application.yml oder bootstrap.yml im Frühjahrsstart? Im Fall logging.config funktioniert die Anwendung anders.
bootstrap.yml
ist soweit ich sehen kann spezifisch für [spring-cloud-config
] ( cloud.spring.io/spring-cloud-config/… )) und es ist die Konfiguration, die verwendet wird, um die richtige Konfiguration zu finden. Also Konfiguration dort wird wahrscheinlich vor application.properties/yamlAntworten:
Ich habe gerade die
Spring Cloud
Jungs gefragt und dachte, ich sollte die Informationen, die ich hier habe, teilen.bootstrap.yml
wird vorher geladenapplication.yml
.Es wird normalerweise für Folgendes verwendet:
spring.application.name
undspring.cloud.config.server.git.uri
innerhalbbootstrap.yml
encryption/decryption
InformationenTechnisch
bootstrap.yml
wird von einer übergeordneten Feder geladenApplicationContext
. Dieses übergeordneteApplicationContext
Element wird vor dem verwendeten geladenapplication.yml
.quelle
bootstrap.yml
?bootstrap.yml
oderbootstrap.properties
Es wird nur verwendet / benötigt, wenn Sie Spring Cloud verwenden und die Konfiguration Ihrer Anwendung auf einem Remote-Konfigurationsserver (z. B. Spring Cloud Config Server) gespeichert ist.
Aus der Dokumentation:
Beachten Sie, dass das
bootstrap.yml
oder zusätzliche Konfigurationen enthaltenbootstrap.properties
kann (z. B. Standardeinstellungen), aber im Allgemeinen müssen Sie hier nur die Bootstrap-Konfiguration eingeben.Normalerweise enthält es zwei Eigenschaften:
spring.cloud.config.uri
)spring.application.name
)Beim Start ruft Spring Cloud den Konfigurationsserver mit dem Namen der Anwendung per HTTP auf und ruft die Konfiguration dieser Anwendung zurück.
application.yml
oderapplication.properties
Enthält die Standardanwendungskonfiguration - normalerweise die Standardkonfiguration, da jede Konfiguration, die während des Bootstrap-Prozesses abgerufen wird, die hier definierte Konfiguration überschreibt.
quelle
Diese Antwort wurde in Buch " Microservices Interview Questions, Für Java-Entwickler (Spring Boot, Spring Cloud, Cloud Native Applications)" von Munish Chandel , Version 1.30, 25.03.2018, sehr schön erklärt .
application.yml
Die Datei application.yml / application.properties ist spezifisch für Spring Boot-Anwendungen. Sofern Sie den Speicherort der externen Eigenschaften einer Anwendung nicht ändern, lädt Spring Boot application.yml immer vom folgenden Speicherort:
Sie können alle externen Eigenschaften für Ihre Anwendung in dieser Datei speichern. Allgemeine Eigenschaften, die in jedem Spring Boot-Projekt verfügbar sind, finden Sie unter: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Sie können diese Eigenschaften wie folgt anpassen gemäß Ihren Anwendungsanforderungen. Die Beispieldatei ist unten dargestellt:
bootstrap.yml
bootstrap.yml hingegen ist spezifisch für spring-cloud-config und wird vor der application.yml geladen
bootstrap.yml wird nur benötigt, wenn Sie Spring Cloud verwenden und Ihre Microservice-Konfiguration auf einem Remote-Spring Cloud-Konfigurationsserver gespeichert ist.
Wichtige Punkte zu bootstrap.yml
Beim Start ruft Spring Cloud den Spring Cloud Config Server mit dem Namen der Anwendung über HTTP (S) auf und ruft die Konfiguration dieser Anwendung zurück.
application.yml enthält die Standardkonfiguration für den Microservice. Jede Konfiguration, die (vom Cloud-Konfigurationsserver) während des Bootstrap-Prozesses abgerufen wird, überschreibt die in application.yml definierte Konfiguration
quelle
Nur meine 2 Cent hier ..
Bootstrap.yml oder Bootstrap.properties wird verwendet, um die Konfiguration von Spring Cloud Server abzurufen.
Zum Beispiel habe ich in der Datei My Bootstrap.properties die folgende Konfiguration
Beim Starten der Anwendung wird versucht, die Konfiguration für den Dienst durch Herstellen einer Verbindung zu http: // localhost: 8888 abzurufen, und es werden die im Spring Cloud Config-Server vorhandenen Calculation-service.properties angezeigt
Sie können dasselbe aus den Protokollen von Calcuation-Service überprüfen, wenn Sie es starten
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
quelle
Nun, ich stimme voll und ganz den Antworten zu, die in diesem Punkt bereits existieren:
bootstrap.yml
wird verwendet, um Parameter zu speichern, die darauf hinweisen, wo sich die Remote-Konfiguration befindet, und der Bootstrap-Anwendungskontext wird mit dieser Remote-Konfiguration erstellt.Tatsächlich ist es auch in der Lage, normale Eigenschaften genauso zu speichern wie das, was zu
application.yml
tun ist. Aber achten Sie auf diese knifflige Sache:bootstrap.yml
, haben diese eine niedrigere Priorität als fast alle anderen Eigenschaftsquellen, einschließlich application.yml. Wie hier beschrieben .Lassen Sie uns klarstellen, dass es zwei Arten von Eigenschaften gibt, die sich auf Folgendes beziehen
bootstrap.yml
:bootstrap.yml
, um den Eigenschafteninhaber zu finden (ein Dateisystem, ein Git-Repository oder etwas anderes), und die Eigenschaften, die wir auf diese Weise erhalten, haben hohe Priorität, sodass sie nicht durch die lokale Konfiguration überschrieben werden können. Wie hier beschrieben .bootstrap.yml
. Wie bereits erläutert, haben sie eine niedrigere Priorität. Verwenden Sie sie, um Standardeinstellungen festzulegen. Dies ist möglicherweise eine gute Idee.Die Unterschiede zwischen dem Anlegen einer Immobilie an
application.yml
oderbootstrap.yml
im Frühjahrsstiefel sind also:bootstrap.yml
.application.yml
höherer Priorität.quelle
Bootstrap.yml wird verwendet, um die Konfiguration vom Server abzurufen. Dies kann für eine Spring Cloud-Anwendung oder für andere sein. Normalerweise sieht es so aus:
Wenn wir die Anwendung starten, versucht sie, eine Verbindung zum angegebenen Server herzustellen und die Konfiguration basierend auf dem in der Run / Debug-Konfiguration genannten Federprofil zu lesen.
Wenn der Server nicht erreichbar ist, kann die Anwendung möglicherweise nicht weiter fortfahren. Wenn jedoch lokal mit dem Profil übereinstimmende Konfigurationen vorhanden sind, werden die Serverkonfigurationen überschrieben.
Guter Ansatz:
Pflegen Sie ein separates Profil für lokal und führen Sie die App mit verschiedenen Profilen aus.
quelle
Eine andere Verwendung für bootstrap.yml ist das Laden der Konfiguration von kubernetes configmap und geheimen Ressourcen. Die Anwendung muss die Spring-Cloud-Starter-Kubernetes- Abhängigkeit importieren .
Wie bei der Spring Cloud Config muss dies während der Bootstrap-Phrase erfolgen.
Aus den Dokumenten:
So können Eigenschaften, die in der configmap-Ressource mit meta.name default-name gespeichert sind, genauso referenziert werden wie Eigenschaften in application.yml
Und der gleiche Prozess gilt für Geheimnisse:
quelle
Bootstrap.ymal ist die erste Datei, die beim Starten der Spring-Boot-Anwendung geladen wird, und application.property wird beim Starten der Anwendung geladen. Sie behalten also möglicherweise die Anmeldeinformationen Ihres Konfigurationsservers usw. in bootstrap.ymal, die beim Laden der Anwendung erforderlich sind, und in application.properties, die Sie behalten, möglicherweise die Datenbank-URL usw.
quelle