2009-02-27 11 views
5

मैं वसंत 2.5.6 का उपयोग कर रहा हूं। मेरे पास एक बीन है जिसका गुण संपत्ति फ़ाइल से PropertyPlaceholderConfigurer के माध्यम से असाइन किया जा रहा है। मैं सोच रहा हूं कि संपत्ति फ़ाइल संशोधित होने पर बीन की संपत्ति को अपडेट करना संभव है या नहीं। उदाहरण के लिए कुछ आवधिक प्रक्रिया होगी जो संपत्ति फ़ाइल की अंतिम संशोधित तिथि की जांच करती है, और यदि यह बदल गई है, तो बीन पुनः लोड करें।वसंत बीन गुणों को गुण फ़ाइल से स्वचालित रूप से ताज़ा किया गया है

मुझे आश्चर्य है कि क्या पहले से ही कुछ मेरी आवश्यकताओं को पूरा करता है। यदि नहीं, तो इस समस्या को हल करने का सबसे अच्छा तरीका क्या होगा?

आपकी मदद के लिए धन्यवाद।

उत्तर

3

स्प्रिंग के प्रॉपर्टी ओवरराइड कॉन्फ़िगरर का उपयोग करने में भी देख सकता है। गुणों को दोबारा पढ़ सकते हैं और कुछ मतदान/शेड्यूलर बीन में इसे फिर से लागू कर सकते हैं।

यह इस बात पर निर्भर करता है कि वास्तविक कॉन्फ़िगर किए गए सेम इन गुणों का उपयोग कैसे करते हैं। उदाहरण के लिए, वे अप्रत्यक्ष रूप से उन्हें कहीं भी कैश कर सकते हैं।

+0

ऐसा लगता है कि यह सबसे सरल दृष्टिकोण है, और यह है कि हम क्या कर रहे हैं। धन्यवाद –

+0

मुझे उस सम्मान में PropertyOverrideConfigurer और PropertyPlaceholderConfigurer के बीच का अंतर नहीं दिखाई देता है। मतभेद हैं कि गुणों को कैसे निर्दिष्ट किया जाता है, लेकिन वास्तविक बीन्स बनने से पहले दोनों को केवल बीनफैक्टरीपोस्टप्रोसेसर के रूप में लागू किया जाता है। उन्हें कैसे लागू किया जा सकता है? –

+0

@hstoerr: प्रॉपर्टीप्लेसहोल्डर कॉन्फिगरर के साथ सेटिंग्स वसंत (एक्सएमएल) कॉन्फ़िगरेशन ({..} अभिव्यक्तियों के साथ) के अंदर 'छिपी हुई' हैं। PropertyOverrideConfigurer के साथ, कॉन्फ़िगरेशन beanName.property = value के प्रारूप में है। तो इसे निकालने वाले बीन्स पर पुन: लागू किया जा सकता है (उदाहरण के लिए PropertyOverrideConfigurer.processProperties – jor

0

ऐसा करने का एक तरीका है अपने आवेदन में एक ग्रोवी कंसोल एम्बेड करना। Here's कुछ निर्देश। वे करने के लिए बहुत आसान थे, बीटीडब्ल्यू - मुझे बहुत कम समय लगा, भले ही मैं ग्रोवी से परिचित नहीं हूं।

एक बार ऐसा करने के बाद आप बस कंसोल में जा सकते हैं और फ्लाई पर लाइव एप्लिकेशन के अंदर मूल्य बदल सकते हैं।

2

यदि आप रनटाइम पर गतिशील गुण चाहते हैं, तो शायद ऐसा करने का एक और तरीका जेएमएक्स है।

0

आप बीन के लिए कस्टम स्कोप का उपयोग करने का प्रयास कर सकते हैं जो गुण फ़ाइल के परिवर्तनों पर बीन्स को दोबारा शुरू करता है। मेरा more extensive answer here देखें।

0

Spring Cloud Config में स्प्रिंग क्लाउड बस के माध्यम से रनटाइम पर कॉन्फ़िगरेशन गुणों को बदलने और क्लाउड कॉन्फ़िगर सर्वर का उपयोग करने की सुविधा है। कॉन्फ़िगरेशन या .properties या .yml फ़ाइलें स्प्रिंग ऐप से "बाहरी" हैं और इसके बजाय स्प्रिंग क्लाउड कॉन्फ़िगर सर्वर से पुनर्प्राप्त किया गया है कि ऐप स्टार्टअप पर कनेक्ट होता है। वह क्लाउड कॉन्फ़िगर सर्वर एक जीआईटी रेपो से उपयुक्त कॉन्फ़िगरेशन या प्रोमोर्टीज या .yml फ़ाइलों को पुनर्प्राप्त करता है (अन्य स्टोरेज समाधान भी हैं, लेकिन जीआईटी सबसे आम है)। फिर आप जीआईटी रेपो की कॉन्फ़िगरेशन फ़ाइलों की सामग्री को बदलकर रनटाइम पर कॉन्फ़िगरेशन बदल सकते हैं - क्लाउड कॉन्फ़िगर सर्वर स्प्रिंग क्लाउड बस के माध्यम से किसी क्लाइंट स्प्रिंग एप्लिकेशन में परिवर्तनों को प्रसारित करता है, और उन अनुप्रयोगों की कॉन्फ़िगरेशन को पुनरारंभ करने की आवश्यकता के बिना अपडेट किया जाता है एप्लिकेशन। आप यहां एक साधारण सरल उदाहरण पा सकते हैं: https://github.com/ldojo/spring-cloud-config-examples

संबंधित मुद्दे