Yanıtlar:
Ben sadece Spring Cloud
çocuklar sordum ve burada var olan bilgileri paylaşmak gerektiğini düşündüm.
bootstrap.yml
önce yüklenmiştir application.yml
.
Genellikle aşağıdakiler için kullanılır:
spring.application.name
ve spring.cloud.config.server.git.uri
içinde belirtmelisinizbootstrap.yml
encryption/decryption
bilgilerTeknik olarak, bootstrap.yml
bir ana Yay tarafından yüklenir ApplicationContext
. Bu üst öğe ApplicationContext
, kullanılan ana öğeden önce yüklenir application.yml
.
bootstrap.yml
?
bootstrap.yml
veya bootstrap.properties
Yalnızca Spring Cloud kullanıyorsanız ve uygulamanızın yapılandırması bir uzak yapılandırma sunucusunda (ör. Spring Cloud Config Server) depolanmışsa kullanılır / gereklidir .
Belgelerden:
Bir Spring Cloud uygulaması, ana uygulama için ana bağlam olan bir "bootstrap" bağlamı oluşturarak çalışır. Kutunun dışında, harici kaynaklardan yapılandırma özelliklerini yüklemek ve ayrıca yerel harici yapılandırma dosyalarındaki özelliklerin şifresini çözmek de sorumludur .
Not olduğunu bootstrap.yml
veya bootstrap.properties
edebilirsiniz ek yapılandırma (örn varsayılan), ancak genellikle sadece burada önyükleme yapılandırma koymak gerekir içerirler.
Genellikle iki özellik içerir:
spring.cloud.config.uri
)spring.application.name
)Başlangıçta Spring Cloud, yapılandırma sunucusuna uygulamanın adıyla bir HTTP çağrısı yapar ve uygulamanın yapılandırmasını geri alır.
application.yml
veya application.properties
Standart uygulama yapılandırmasını içerir - önyükleme işlemi sırasında alınan herhangi bir yapılandırma burada tanımlanan yapılandırmayı geçersiz kılacağından tipik olarak varsayılan yapılandırma içerir.
Bu cevap çok güzel "kitabında açıkladı olmuştur Java Geliştiriciler (Bahar Boot, Bahar Cloud, Cloud Yerel Uygulamaları) için, Microservices Mülakat Soruları tarafından Munish chandel , Version 1.30, 2018/03/25.
Bu kitaptan aşağıdaki içerik alınmıştır ve bu cevap için toplam kredi Munish Chandel kitabının yazarına gitmektedir.
application.yml
application.yml / application.properties dosyası Spring Boot uygulamalarına özgüdür. Bir uygulamanın harici özelliklerinin konumunu değiştirmediğiniz sürece, yay önyüklemesi her zaman application.yml dosyasını aşağıdaki konumdan yükler :
/src/main/resources/application.yml
Uygulamanız için tüm harici özellikleri bu dosyada saklayabilirsiniz. Herhangi bir Spring Boot projesinde bulunan ortak özellikleri şu adreste bulabilirsiniz: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Bu özellikleri şu şekilde özelleştirebilirsiniz : Uygulama ihtiyaçlarınıza göre. Örnek dosya aşağıda gösterilmiştir:
spring:
application:
name: foobar
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
server:
port: 9000
bootstrap.yml
Öte yandan bootstrap.yml , spring-cloud-config'e özgüdür ve uygulamadan önce yüklenir.
bootstrap.yml yalnızca Spring Cloud kullanıyorsanız ve mikro hizmet yapılandırmanız uzak bir Spring Cloud Config Server'da depolanıyorsa gereklidir.
Bootstrap.yml hakkında önemli noktalar
spring.application.name: "uygulama adı" spring.cloud.config.server.git.uri: "git-uri-config"
spring.application.name: spring.cloud.config.uri:
Başlangıçta Spring Cloud, Spring Cloud Config Server'a uygulamanın adıyla bir HTTP (S) çağrısı yapar ve o uygulamanın yapılandırmasını geri alır.
application.yml, mikro hizmet için varsayılan yapılandırmayı içerir ve önyükleme işlemi sırasında alınan herhangi bir yapılandırma (bulut yapılandırma sunucusundan) application.yml içinde tanımlanan yapılandırmayı geçersiz kılar.
Burada sadece 2 sentim var ..
Bootstrap.yml veya Bootstrap.properties, yapılandırmayı Spring Cloud Server'dan almak için kullanılır.
Örneğin, Bootstrap.properties dosyamda aşağıdaki Yapılandırma var
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
Uygulamayı başlattığınızda, http: // localhost: 8888 adresine bağlanarak hizmet yapılandırmasını almaya çalışır. ve Spring Cloud Config sunucusunda bulunan Calculation-service.properties bakar
Aynı işlemi, başlattığınızda Calcuation-Service günlüklerinden de doğrulayabilirsiniz.
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
Bu noktada zaten var olan cevaplara tamamen katılıyorum:
bootstrap.yml
, uzak yapılandırmanın nerede olduğuna işaret eden parametreleri kaydetmek için kullanılır ve bu uzak yapılandırma ile Bootstrap Uygulama Bağlamı oluşturulur.Aslında normal özellikleri olduğu gibi saklayabilir application.yml
. Ancak bu zor şeye dikkat edin:
bootstrap.yml
, application.yml dahil olmak üzere hemen hemen tüm diğer özellik kaynaklarından daha düşük önceliğe sahip olurlar. Olarak tarif burada .Açıklığa kavuşturalım, iki tür özellik var bootstrap.yml
:
bootstrap.yml
özellikleri tutucu (A dosya sistemini, git depo veya başka bir şey) bulmak için ve onlar yerel yapılandırma tarafından geçersiz kılınmış olamaz bu yüzden bu şekilde olsun özellikleri, yüksek önceliğe sahip bulunmaktadır. Olarak tarif burada .bootstrap.yml
. Erken açıklandığı gibi, daha düşük öncelik kazanırlar. Onları varsayılanları ayarlamak için kullanın belki de iyi bir fikir.Yani bir mülk koymak arasındaki farklar application.yml
bootstrap.yml
bahar önyüklemesine veya bahar önyüklemesine şunlardır:
bootstrap.yml
.application.yml
daha yüksek önceliğe sahip olacaktır.Bootstrap.yml, yapılandırmayı sunucudan almak için kullanılır. Bir Spring bulut uygulaması veya diğerleri için olabilir. Genellikle şöyle görünür:
spring:
application:
name: "app-name"
cloud:
config:
uri: ${config.server:http://some-server-where-config-resides}
Uygulamayı başlattığımızda, verilen sunucuya bağlanmaya ve çalıştırma / hata ayıklama yapılandırmasında belirtilen yay profiline göre yapılandırmayı okumaya çalışır.
Sunucuya erişilemiyorsa uygulama daha fazla ilerleyemeyebilir. Ancak, profille eşleşen yapılandırmalar yerel olarak mevcutsa, sunucu yapılandırmaları geçersiz kılınır.
Iyi bir yaklaşım:
Yerel için ayrı bir profil oluşturun ve uygulamayı farklı profiller kullanarak çalıştırın.
Başka bir kullanımı bootstrap.yml Kubernetes yük yapılandırmasına olan configMap ve gizli kaynaklar. Uygulama spring-cloud-starter-kubernet'leri içe aktarmalıdır bağımlılığını .
Spring Cloud Config'te olduğu gibi, bunun önyükleme ifadesi sırasında gerçekleşmesi gerekir.
Dokümanlardan:
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
Bu nedenle meta.name default-name ile configmap kaynağında saklanan özelliklere başvurulabilir. başvurulabilir
Aynı süreç sırlar için de geçerlidir:
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, bahar önyükleme uygulamasını başlattığınızda yüklenen ilk dosyadır ve uygulama başladığında application.property yüklenir. Bu nedenle, uygulama yüklenirken gerekli bootstrap.yml dosyasında yapılandırma sunucunuzun kimlik bilgileri vb.
bootstrap.yml
[spring-cloud-config
] ( cloud.spring.io/spring-cloud-config/… ) 'a özgü görebildiğim kadarıyla doğru yapılandırmayı bulmak için kullanılan yapılandırmadır. Yani config muhtemelen application.properties/yaml