स्प्रिंग क्लाउड कॉन्फ़िगर सर्वर एकाधिक प्रोफ़ाइल स्वीकार करता है और जब मैं एप्लिकेशन के/env endpoint तक पहुंचता हूं तो सभी प्रोफाइल के लिए गुण देता है। प्रतिक्रिया प्रत्येक प्रोफ़ाइल के लिए विशिष्ट गुणों की सूची है। यदि एक ही संपत्ति 2 अलग-अलग संपत्ति फ़ाइलों में मौजूद है, तो जिसे अंतिम रूप में परिभाषित किया गया है वह प्राथमिकता लेता है। क्या संपत्ति कुंजी और मूल्यों की अंतिम सूची प्राप्त करने का कोई तरीका है जिसका उपयोग एप्लिकेशन द्वारा किया जाएगा?गुणों की अंतिम सूची सूची - स्प्रिंग क्लाउड कॉन्फ़िगर सर्वर
उत्तर
यह वसंत फ्रेमवर्क की जानबूझकर सीमा प्रतीत होता है।
देखें आप इसे हैक और PropertySources इंटरफेस है, तो सभी अलग-अलग PropertySource वस्तुओं से अधिक पाश इंजेक्षन सकता है, लेकिन आप को पता है कि आप क्या गुण देख रहे हैं होगा।
बादल कॉन्फ़िग क्लाइंट अनुप्रयोग के लिए
मैं अलग अलग तरीकों की कोशिश की और पाया है (गलती से) के बाद: विन्यास गुण
बादल कॉन्फ़िग सर्वर अनुप्रयोग के लिए की
GET /env/.*
रिटर्न पूरी सूची
यह पता चला है कि यह पहले ही लागू हो चुका है, लेकिन दस्तावेज नहीं है एल। आप सभी की जरूरत पैटर्न के अनुसार json
, yml
या properties
अनुरोध करने के लिए है:
/{application}-{profile}.{ext}
/{label}/{application}-{profile}.{ext}
import java.util.properties;
import org.springframework.core.env.AbstractEnvironment;
import org.springframework.core.env.CompositePropertySource;
import org.springframework.core.env.Environment;
public class MyClass {
@Autowired
private Environment env;
Properties getProperties() {
Properties props = new Properties();
CompositePropertySource bootstrapProperties = (CompositePropertySource) ((AbstractEnvironment) env).getPropertySources().get("bootstrapProperties");
for (String propertyName : bootstrapProperties.getPropertyNames()) {
props.put(propertyName, bootstrapProperties.getProperty(propertyName));
}
return props;
}
}
क्षमा करें ... यह मेरा पहली बार एक सवाल यहाँ उत्तर दे रहा है। मैंने विशेष रूप से पर एक खाता बनाया है जो इस प्रश्न का उत्तर देता है क्योंकि मैं उसी मुद्दे पर शोध करते समय उस पर आया था। मुझे समाधान मिला जो मेरे लिए काम करता था और इसे साझा करने का फैसला करता था।
मैं एक नया "गुण" वस्तु को प्रारंभ
मैं के लिए संपत्ति स्रोत देखने (एक HashMap या जो कुछ भी किसी और आप चाहते हैं हो सकता है):
यहाँ क्या किया था की मेरी व्याख्या चला जाता है "बूटस्ट्रैपप्रॉपर्टीज" जो एक कंपोजिटप्रॉपर्टी स्रोत ऑब्जेक्ट है। इस संपत्ति स्रोत में लोड किए गए सभी एप्लिकेशन गुण शामिल हैं।
मैं सभी संपत्ति के नाम के माध्यम से लूप CompositePropertySource वस्तु पर "getPropertyNames" विधि से लौटे हैं और एक नया संपत्ति प्रविष्टि बनाने के।
मैं गुण वस्तु वापस करता हूं।
कृपया ध्यान दें: कोड केवल उत्तर ही निराश हैं। कुछ स्तरों के स्पष्टीकरण जोड़ने के लिए यह हमेशा बेहतर होता है। – GhostCat
मुझे सभी संपत्तियां दिखाई नहीं देती हैं। उदाहरण के लिए 'bootstrap.confl'' bootstrap.confl' से। हालांकि, मैं इसे actuator का उपयोग कर देखता हूँ। –
धन्यवाद @ टोड जोन्स !! –
स्प्रिंग बूट आप अपने विन्यास बाह्यरूप ताकि आप विभिन्न वातावरण में एक ही आवेदन कोड के साथ काम कर सकते हैं अनुमति देता है।आप कॉन्फ़िगरेशन को बाहरी करने के लिए गुण फ़ाइलें, वाईएएमएल फ़ाइलें, पर्यावरण चर और कमांड लाइन तर्क का उपयोग कर सकते हैं। प्रॉपर्टी वैल्यू को @ वैल्यू एनोटेशन का उपयोग करके सीधे अपने बीन्स में इंजेक्शन दिया जा सकता है, जो स्प्रिंग्स एनवायरनमेंट एबस्ट्रक्शन के माध्यम से पहुंचा जा सकता है या @ कॉन्फिगरेशनप्रॉपर्टीज के माध्यम से संरचित ऑब्जेक्ट्स के लिए बाध्य किया जा सकता है।
स्प्रिंग बूट एक बहुत ही विशेष प्रॉपर्टीसोर्स ऑर्डर का उपयोग करता है जिसे मूल्यों के समझदार ओवरराइडिंग की अनुमति देने के लिए डिज़ाइन किया गया है। गुण निम्न क्रम में माना जाता है:
- (~/.spring-बूट-devtools.properties जब DevTools सक्रिय है) अपने घर निर्देशिका पर वैश्विक सेटिंग्स गुण DevTools। आपके परीक्षणों पर
- @TestPropertySource एनोटेशन।
- @ SpringBootTest # गुण आपके परीक्षणों पर एनोटेशन विशेषता।
- कमांड लाइन तर्क। SPRING_APPLICATION_JSON से
- गुण (इनलाइन JSON एक वातावरण चर या प्रणाली संपत्ति में एम्बेडेड)
- ServletConfig init मानकों।
- ServletContext init पैरामीटर।
- जेएनडीआई जावा से गुण: comp/env।
- जावा सिस्टम गुण (System.getProperties())।
- ओएस पर्यावरण चर।
- एक RandomValuePropertySource जिसमें केवल यादृच्छिक गुण हैं। *।
- प्रोफ़ाइल विशिष्ट अपने पैक जार के बाहर आवेदन गुण (आवेदन के {प्रोफ़ाइल} .properties और YAML वेरिएंट)
- प्रोफ़ाइल-विशिष्ट अनुप्रयोग गुण अपने जार के अंदर पैक (आवेदन के {प्रोफ़ाइल} .properties और YAML वेरिएंट)
- आपके पैक किए गए जार (application.properties और YAML प्रकारों) के बाहर एप्लिकेशन गुण।
- आपके जार (application.properties और YAML प्रकारों) के अंदर पैक किए गए एप्लिकेशन गुण।
- @PropertySource टिप्पणियां आपके @ कॉन्फ़िगरेशन कक्षाओं पर।
- डिफ़ॉल्ट गुण (SpringApplication.setDefaultProperties का उपयोग करके निर्दिष्ट)।
नीचे दिया गया प्रोग्राम वसंत बूट वातावरण से गुणों को प्रिंट करता है।
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.web.context.support.StandardServletEnvironment;
@Component
public class EnvironmentLogger extends ApplicationObjectSupport {
@Override
protected void initApplicationContext(ApplicationContext context) throws BeansException {
Environment environment = context.getEnvironment();
String[] profiles = environment.getActiveProfiles();
if(profiles != null && profiles.length > 0) {
for (String profile : profiles) {
System.out.print(profile);
}
} else {
System.out.println("Setting default profile");
}
//Print the profile properties
if(environment != null && environment instanceof StandardServletEnvironment) {
StandardServletEnvironment env = (StandardServletEnvironment)environment;
MutablePropertySources mutablePropertySources = env.getPropertySources();
if(mutablePropertySources != null) {
for (PropertySource<?> propertySource : mutablePropertySources) {
if(propertySource instanceof MapPropertySource) {
MapPropertySource mapPropertySource = (MapPropertySource)propertySource;
if(mapPropertySource.getPropertyNames() != null) {
System.out.println(propertySource.getName());
String[] propertyNames = mapPropertySource.getPropertyNames();
for (String propertyName : propertyNames) {
Object val = mapPropertySource.getProperty(propertyName);
System.out.print(propertyName);
System.out.print(" = " + val);
}
}
}
}
}
}
}
}
सुधाकर धन्यवाद। मैं कोशिश करूँगा –
- 1. स्प्रिंग क्लाउड कॉन्फ़िगर
- 2. वसंत क्लाउड कॉन्फ़िगर सर्वर। गुण
- 3. स्प्रिंग क्लाउड कॉन्फ़िगर सर्वर को सुरक्षित कैसे करें
- 4. स्प्रिंग क्लाउड कॉन्फ़िगर यूरेका- पहला दृष्टिकोण
- 5. जावा स्विंग यूआई गुणों की सूची?
- 6. वॉचर्स की जेआईआरए डिफ़ॉल्ट सूची कॉन्फ़िगर करें
- 7. सूची की अंतिम अनुक्रमणिका कैसे प्राप्त करें?
- 8. स्प्रिंग ऑटोवायर एक सूची
- 9. जावा सूची में सूची की सूची बदलें
- 10. शेयरपॉइंट सूची में पहला और अंतिम सूची प्राप्त करें
- 11. क्लाउड-इनिट: क्लाउड-कॉन्फ़िगर निर्देशों का निष्पादन आदेश क्या है?
- 12. स्प्रिंग क्लाउड कंसुल/रीफ्रेश एंडपॉइंट
- 13. जावा सॉर्ट सूची की सूची
- 14. ऑर्डर सूची की सूची आइटम के भीतर सूची सूची आइटम?
- 15. ParseObjects की एक सूची को एक Parse.Cloud.httpRequest में क्लाउड फ़ंक्शन
- 16. डेटाबेस की सूची प्राप्त करें चयनित सर्वर
- 17. सभी संभावित साबुन सर्वर अपवादों की सूची
- 18. एसक्यूएल सर्वर सभी त्रुटियों की सूची?
- 19. स्प्रिंग क्लाउड आर्किटेक्ट
- 20. पार्सल पार्ससेल ऑब्जेक्ट की सूची की सूची
- 21. स्प्रिंग रेस्ट - फाइलों की सूची भेजते समय अपवाद
- 22. ट्रांसफॉर्मर.सेटऑटपुटप्रॉपर्टी के गुणों की एक सूची कहां मिल सकती है?
- 23. वर्ग गुणों को स्ट्रिंग्स की सूची में कनवर्ट करें
- 24. यूनिटी शेडर गुणों की पूरी सूची कैसे प्राप्त करें
- 25. निर्दिष्ट कक्षा में मिश्रित गुणों की सूची कैसे प्राप्त करें?
- 26. किसी ऑब्जेक्ट के लिए सभी गुणों की सूची प्राप्त करें
- 27. शाखाओं की क्रोनोलॉजिकल सूची?
- 28. किसी सूची में किसी ऑब्जेक्ट के गुणों की सूची प्राप्त करें
- 29. अंतिम इनलाइन सूची आइटम कंटेनर की शेष चौड़ाई बढ़ाएं
- 30. मैं केवल अंतिम एन ऑब्जेक्ट्स की सूची कैसे रखूं?
मुझे संदेह है कि ऐसा कुछ भी है। किसी भी पार नहीं आया है। लेकिन बॉक्स से बाहर निकलना और इस सवाल का जवाब प्राप्त करना बहुत अच्छा होगा। –
आपके अपडेट के लिए धन्यवाद, @GrinishNepal! –