Apa perbedaan antara meletakkan properti di application.yml atau bootstrap.yml di spring boot? Dalam kasus logging.config, aplikasi bekerja berbeda.
251
Apa perbedaan antara meletakkan properti di application.yml atau bootstrap.yml di spring boot? Dalam kasus logging.config, aplikasi bekerja berbeda.
bootstrap.yml
sejauh yang saya bisa melihat khusus untuk [spring-cloud-config
] ( cloud.spring.io/spring-cloud-config/… )) dan itu konfigurasi yang digunakan untuk menemukan konfigurasi yang tepat. Jadi konfigurasi mungkin ada dimuat sebelum application.properties/yamlJawaban:
Saya baru saja bertanya kepada
Spring Cloud
teman - teman dan berpikir saya harus membagikan info yang saya miliki di sini.bootstrap.yml
dimuat sebelumnyaapplication.yml
.Ini biasanya digunakan untuk yang berikut:
spring.application.name
danspring.cloud.config.server.git.uri
di dalamnyabootstrap.yml
encryption/decryption
informasiSecara teknis,
bootstrap.yml
dimuat oleh Spring indukApplicationContext
. Orang tuaApplicationContext
itu dimuat sebelum yang digunakanapplication.yml
.sumber
bootstrap.yml
?bootstrap.yml
ataubootstrap.properties
Ini hanya digunakan / diperlukan jika Anda menggunakan Spring Cloud dan konfigurasi aplikasi Anda disimpan pada server konfigurasi jarak jauh (misalnya Spring Cloud Config Server).
Dari dokumentasi:
Perhatikan bahwa
bootstrap.yml
ataubootstrap.properties
dapat berisi konfigurasi tambahan (misalnya default) tetapi umumnya Anda hanya perlu meletakkan konfigurasi bootstrap di sini.Biasanya mengandung dua properti:
spring.cloud.config.uri
)spring.application.name
)Saat mulai, Spring Cloud melakukan panggilan HTTP ke server konfigurasi dengan nama aplikasi dan mengambil kembali konfigurasi aplikasi itu.
application.yml
atauapplication.properties
Berisi konfigurasi aplikasi standar - biasanya konfigurasi default karena konfigurasi apa pun yang diambil selama proses bootstrap akan menimpa konfigurasi yang ditentukan di sini.
sumber
Jawaban ini telah dijelaskan dengan sangat indah dalam buku " Pertanyaan Wawancara microservices, Untuk Pengembang Java (Spring Boot, Spring Cloud, Aplikasi Cloud Asli) oleh Munish Chandel , Versi 1.30, 25.03.2018.
application.yml
file application.yml / application.properties khusus untuk aplikasi Spring Boot. Kecuali Anda mengubah lokasi properti eksternal suatu aplikasi, spring boot akan selalu memuat application.yml dari lokasi berikut:
Anda dapat menyimpan semua properti eksternal untuk aplikasi Anda dalam file ini. Properti umum yang tersedia di proyek Spring Boot dapat ditemukan di: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Anda dapat menyesuaikan properti ini sebagai sesuai kebutuhan aplikasi Anda. File sampel ditunjukkan di bawah ini:
bootstrap.yml
bootstrap.yml di sisi lain khusus untuk pegas-cloud-config dan dimuat sebelum application.yml
bootstrap.yml hanya diperlukan jika Anda menggunakan Spring Cloud dan konfigurasi microservice Anda disimpan pada Server Cloud Cloud jauh.
Poin penting tentang bootstrap.yml
Saat mulai, Spring Cloud melakukan panggilan HTTP (S) ke Server Spring Cloud Config dengan nama aplikasi dan mengambil kembali konfigurasi aplikasi itu.
application.yml berisi konfigurasi default untuk layanan microser dan konfigurasi apa pun yang diambil (dari cloud config server) selama proses bootstrap akan menimpa konfigurasi yang ditentukan dalam application.yml
sumber
Hanya 2 Cents saya di sini ..
Bootstrap.yml atau Bootstrap.properties digunakan untuk mengambil konfigurasi dari Spring Cloud Server.
Sebagai contoh, dalam file Bootstrap.properties Saya, saya memiliki Config berikut
Saat memulai aplikasi, ia mencoba mengambil konfigurasi untuk layanan dengan menghubungkan ke http: // localhost: 8888 dan melihat Calculation-service.properties yang ada di server Spring Cloud Config
Anda dapat memvalidasi yang sama dari log Calcuation-Service ketika Anda memulai
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
sumber
Baiklah, saya sepenuhnya setuju dengan jawaban yang sudah ada tentang hal ini:
bootstrap.yml
digunakan untuk menyimpan parameter yang menunjukkan di mana konfigurasi jarak jauh berada dan Konteks Aplikasi Bootstrap dibuat dengan konfigurasi jarak jauh ini.Sebenarnya, ia juga dapat menyimpan properti normal sama seperti apa yang
application.yml
dilakukan. Tapi perhatikan hal rumit ini:bootstrap.yml
, mereka akan mendapatkan prioritas lebih rendah daripada hampir semua sumber properti lainnya, termasuk application.yml. Seperti dijelaskan di sini .Mari kita perjelas, ada dua jenis properti yang terkait dengan
bootstrap.yml
:bootstrap.yml
untuk menemukan pemilik properti (Sistem file, git repositori atau sesuatu yang lain), dan properti yang kami dapatkan dengan cara ini adalah dengan prioritas tinggi, sehingga tidak dapat ditimpa oleh konfigurasi lokal. Seperti dijelaskan di sini .bootstrap.yml
. Seperti yang dijelaskan lebih awal, mereka akan mendapatkan prioritas lebih rendah. Gunakan mereka untuk mengatur default mungkin ide yang bagus.Jadi perbedaan antara meletakkan properti di
application.yml
ataubootstrap.yml
di boot musim semi adalah:bootstrap.yml
.application.yml
akan mendapatkan prioritas lebih tinggi.sumber
Bootstrap.yml digunakan untuk mengambil konfigurasi dari server. Ini bisa untuk aplikasi cloud Spring atau untuk orang lain. Biasanya terlihat seperti:
Ketika kita memulai aplikasi itu mencoba untuk terhubung ke server yang diberikan dan membaca konfigurasi berdasarkan profil pegas yang disebutkan dalam konfigurasi run / debug.
Jika server adalah aplikasi yang tidak terjangkau bahkan mungkin tidak dapat melanjutkan lebih jauh. Namun, jika konfigurasi yang cocok dengan profil hadir secara lokal, konfigurasi server akan diganti.
Pendekatan yang baik:
Pertahankan profil terpisah untuk lokal dan jalankan aplikasi menggunakan profil yang berbeda.
sumber
Penggunaan lain untuk bootstrap.yml adalah untuk memuat konfigurasi dari kubernetes configmap dan sumber daya rahasia . Aplikasi harus mengimpor spring-cloud-starter-kubernetes dependensi .
Seperti dengan Spring Cloud Config, ini harus terjadi selama frase bootstrap.
Dari dokumen:
Jadi properti yang disimpan dalam sumber daya configmap dengan meta.name nama-default dapat dirujuk sama seperti properti di application.yml
Dan proses yang sama berlaku untuk rahasia:
sumber
Bootstrap.yml adalah file pertama yang dimuat saat Anda memulai pegas boot aplikasi dan application.property dimuat saat aplikasi dimulai. Jadi, Anda tetap, mungkin kredensial server konfigurasi Anda, dll., Di bootstrap.yml yang diperlukan saat memuat aplikasi dan kemudian di application.properti yang Anda simpan mungkin berupa URL basis data dll.
sumber