जवाबों:
मैंने सिर्फ Spring Cloudलोगों से पूछा है और सोचा है कि मुझे यहाँ जो जानकारी है उसे साझा करना चाहिए।
bootstrap.ymlपहले लोड किया गया है application.yml।
यह आमतौर पर निम्नलिखित के लिए उपयोग किया जाता है:
spring.application.nameऔर spring.cloud.config.server.git.uriअंदर करना चाहिएbootstrap.ymlencryption/decryptionजानकारीतकनीकी रूप से, bootstrap.ymlएक मूल स्प्रिंग द्वारा लोड किया जाता है ApplicationContext। वह जनक ApplicationContextजो उपयोग करता है उससे पहले लोड किया जाता है application.yml।
bootstrap.yml?
bootstrap.yml या bootstrap.propertiesयदि आप स्प्रिंग क्लाउड का उपयोग कर रहे हैं तो इसका केवल उपयोग / आवश्यकता है और आपके एप्लिकेशन का कॉन्फ़िगरेशन दूरस्थ कॉन्फ़िगरेशन सर्वर (जैसे स्प्रिंग क्लाउड कॉन्फ़िगरेशन सर्वर) पर संग्रहीत है।
प्रलेखन से:
स्प्रिंग क्लाउड एप्लिकेशन "बूटस्ट्रैप" संदर्भ बनाकर संचालित होता है, जो मुख्य एप्लिकेशन के लिए एक मूल संदर्भ है। बॉक्स से बाहर यह बाहरी स्रोतों से कॉन्फ़िगरेशन गुणों को लोड करने और स्थानीय बाहरी कॉन्फ़िगरेशन फ़ाइलों में गुणों को डिक्रिप्ट करने के लिए भी जिम्मेदार है ।
ध्यान दें कि bootstrap.ymlया में अतिरिक्त कॉन्फ़िगरेशन हो bootstrap.properties सकता है (जैसे डिफॉल्ट्स) लेकिन आमतौर पर आपको केवल यहां बूटस्ट्रैप कॉन्फिगरेशन की आवश्यकता होती है।
आमतौर पर इसमें दो गुण होते हैं:
spring.cloud.config.uri)spring.application.name)स्टार्टअप पर, स्प्रिंग क्लाउड एप्लिकेशन के नाम के साथ कॉन्फ़िगरेशन सर्वर पर एक HTTP कॉल करता है और उस एप्लिकेशन के कॉन्फ़िगरेशन को वापस प्राप्त करता है।
application.yml या application.propertiesमानक एप्लिकेशन कॉन्फ़िगरेशन समाहित करता है - आमतौर पर डिफ़ॉल्ट कॉन्फ़िगरेशन चूंकि बूटस्ट्रैप प्रक्रिया के दौरान प्राप्त कोई भी कॉन्फ़िगरेशन यहां परिभाषित कॉन्फ़िगरेशन को ओवरराइड करेगा।
मुनीष चंदेल , संस्करण 1.30, 25.03.2018 द्वारा पुस्तक " माइक्रोसिस्टर्स इंटरव्यू प्रश्न, फॉर जावा डेवलपर्स (स्प्रिंग बूट, स्प्रिंग क्लाउड, क्लाउड नेटिव एप्लिकेशन) के लिए इस उत्तर को बहुत खूबसूरती से समझाया गया है ।
इस पुस्तक से निम्नलिखित सामग्री ली गई है, और इस उत्तर का कुल श्रेय पुस्तक के लेखक मुनीश चंदेल को जाता है
application.yml
application.yml / application.properties फ़ाइल स्प्रिंग बूट अनुप्रयोगों के लिए विशिष्ट है। जब तक आप एक आवेदन के बाहरी गुण का स्थान बदलने, वसंत बूट हमेशा लोड होगा application.yml निम्न स्थान से:
/src/main/resources/application.yml
आप इस फ़ाइल में अपने आवेदन के लिए सभी बाहरी गुणों को संग्रहीत कर सकते हैं। किसी भी स्प्रिंग बूट प्रोजेक्ट में उपलब्ध होने वाले सामान्य गुण यहां देखे जा सकते हैं: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html आप इन गुणों को अपने अनुसार अनुकूलित कर सकते हैं आपके आवेदन की जरूरत के अनुसार। नमूना फ़ाइल नीचे दिखाया गया है:
spring:
application:
name: foobar
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
server:
port: 9000
bootstrap.yml
दूसरी ओर bootstrap.yml वसंत-क्लाउड-कॉन्फ़िगरेशन के लिए विशिष्ट है और एप्लिकेशन से पहले लोड किया गया है
यदि आप स्प्रिंग क्लाउड का उपयोग कर रहे हैं तो bootstrap.yml की आवश्यकता है और आपका माइक्रोफ़ोन कॉन्फ़िगरेशन किसी दूरस्थ स्प्रिंग क्लाउड कॉन्फ़िगरेशन सर्वर पर संग्रहीत है।
Bootstrap.yml के बारे में महत्वपूर्ण बातें
spring.application.name: "एप्लिकेशन-नाम" spring.cloud.config.server.git.uri: "git-uri-config"
spring.application.name: spring.cloud.config.uri:
स्टार्टअप पर, स्प्रिंग क्लाउड एप्लिकेशन के नाम के साथ स्प्रिंग क्लाउड कॉन्फ़िगरेशन सर्वर को HTTP (एस) कॉल करता है और उस एप्लिकेशन के कॉन्फ़िगरेशन को वापस प्राप्त करता है।
application.yml में microservice के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन होता है और बूटस्ट्रैप प्रक्रिया के दौरान पुनर्प्राप्त (क्लाउड कॉन्फिग सर्वर से) किसी भी कॉन्फ़िगरेशन को एप्लिकेशन में परिभाषित कॉन्फ़िगरेशन को ओवरराइड कर देगा।
बस मेरे 2 सेंट यहाँ ..
Bootstrap.yml या Bootstrap.properties को स्प्रिंग क्लाउड सर्वर से कॉन्फिगर लाने के लिए उपयोग किया जाता है।
उदाहरण के लिए, My Bootstrap.properties फ़ाइल में मेरे पास निम्न कॉन्फ़िगरेशन है
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
एप्लिकेशन शुरू करने पर, यह http: // localhost: 8888 से जुड़कर सेवा के लिए कॉन्फ़िगरेशन लाने की कोशिश करता है और स्प्रिंग क्लाउड कॉन्फ़िगरेशन सर्वर में मौजूद गणना- service.properties को देखता है।
जब आप इसे शुरू करते हैं, तो आप Calcuation-Service के लॉग से इसे मान्य कर सकते हैं
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
ठीक है, मैं इस बिंदु पर पहले से मौजूद उत्तरों से पूरी तरह सहमत हूं:
bootstrap.ymlउन मापदंडों को सहेजने के लिए उपयोग किया जाता है जो इंगित करते हैं कि दूरस्थ कॉन्फ़िगरेशन कहाँ है और बूटस्ट्रैप एप्लिकेशन संदर्भ इन दूरस्थ कॉन्फ़िगरेशन के साथ बनाया गया है।दरअसल, यह सामान्य गुणों को स्टोर करने में भी सक्षम है जैसा कि क्या application.ymlकरते हैं। लेकिन इस मुश्किल बात पर ध्यान दें:
bootstrap.yml, तो उन्हें application.yml सहित लगभग किसी भी अन्य संपत्ति स्रोतों से कम वरीयता मिलेगी। जैसा यहाँ बताया गया है ।आइए इसे स्पष्ट करें, दो प्रकार के गुण हैं bootstrap.yml:
bootstrap.ymlगुण धारक (ए फ़ाइल सिस्टम, गिट रिपॉजिटरी या कुछ और) को खोजने के लिए उपयोग करते हैं, और इस तरह से मिलने वाले गुण उच्च पूर्वता के साथ हैं, इसलिए उन्हें स्थानीय कॉन्फ़िगरेशन द्वारा ओवरराइड नहीं किया जा सकता है। जैसा यहाँ बताया गया है ।bootstrap.yml। जैसा कि जल्दी बताया गया है, उन्हें कम वरीयता मिलेगी। एक अच्छा विचार शायद चूक सेट करने के लिए उनका उपयोग करें।तो application.ymlया bootstrap.ymlवसंत बूट में एक संपत्ति डालने के बीच के अंतर हैं:
bootstrap.yml।application.ymlउच्च वरीयता प्राप्त होगी।Bootstrap.yml का उपयोग सर्वर से config लाने के लिए किया जाता है। यह स्प्रिंग क्लाउड एप्लिकेशन के लिए या दूसरों के लिए हो सकता है। आमतौर पर ऐसा दिखता है:
spring:
application:
name: "app-name"
cloud:
config:
uri: ${config.server:http://some-server-where-config-resides}
जब हम एप्लिकेशन शुरू करते हैं तो यह दिए गए सर्वर से कनेक्ट करने की कोशिश करता है और रन / डीबग कॉन्फ़िगरेशन में उल्लिखित स्प्रिंग प्रोफ़ाइल के आधार पर कॉन्फ़िगरेशन को पढ़ता है।

यदि सर्वर अप्राप्य है तो अनुप्रयोग आगे बढ़ने में असमर्थ हो सकता है। हालाँकि, यदि प्रोफ़ाइल से मेल खाने वाले कॉन्फ़िगरेशन स्थानीय रूप से मौजूद हैं, तो सर्वर कॉन्फ़िगरेशन ओवरराइड हो जाता है।
अच्छी एप्रोच:
स्थानीय के लिए एक अलग प्रोफ़ाइल बनाए रखें और विभिन्न प्रोफ़ाइलों का उपयोग करके ऐप चलाएं।
के लिए एक और उपयोग bootstrap.yml Kubernetes से लोड विन्यास है configmap और गुप्त संसाधनों। आवेदन वसंत-बादल-स्टार्टर-कुबेरनेट्स निर्भरता को आयात करना चाहिए ।
स्प्रिंग क्लाउड कॉन्फ़िगरेशन के साथ, इसे बूटस्ट्रैप वाक्यांश के दौरान जगह लेनी होगी।
डॉक्स से:
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
तो meta.name डिफ़ॉल्ट-नाम के साथ configmap संसाधन में संग्रहीत गुणों को केवल application.yml में गुणों के रूप में संदर्भित किया जा सकता है
और यही प्रक्रिया रहस्यों पर लागू होती है:
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 पहली फाइल लोड होती है जब आप स्प्रिंग बूट एप्लिकेशन शुरू करते हैं और एप्लिकेशन शुरू होने पर एप्लिकेशन लोड हो जाता है। इसलिए, आप अपने config सर्वर के क्रेडेंशियल्स आदि को bootstrap.yml में रख सकते हैं, जो कि लोडिंग एप्लिकेशन के दौरान आवश्यक है और फिर Application.properties में आपके पास डेटाबेस URL आदि हो सकता है।
bootstrap.ymlजहाँ तक मैं विशिष्ट देख सकता हूँ [spring-cloud-config( cloud.spring.io/spring-cloud-config/… )) और यह सही कॉन्फ़िगरेशन खोजने के लिए उपयोग किया जाने वाला कॉन्फ़िगरेशन है। तो विन्यास वहाँ शायद पहले से भरा है application.properties/yaml