मैं अपने स्प्रिंग परिवेश को इस तरह कॉन्फ़िगर करने के लिए एनोटेशन का उपयोग कर रहा हूं:
@Configuration
...
@PropertySource("classpath:/config/default.properties")
...
public class GeneralApplicationConfiguration implements WebApplicationInitializer
{
@Autowired
Environment env;
}
यह मेरे गुणों का default.propertiesहिस्सा है Environment। मैं @PropertySourceयहां तंत्र का उपयोग करना चाहता हूं , क्योंकि यह पहले से ही पर्यावरण की सेटिंग्स (उदाहरण के लिए config_dir स्थान) के आधार पर कई फ़ॉलबैक परतों और विभिन्न गतिशील स्थानों के माध्यम से गुणों को अधिभारित करने की संभावना प्रदान करता है। मैंने उदाहरण को आसान बनाने के लिए केवल कमबैक छीन लिया।
हालाँकि, अब मेरी समस्या यह है कि मैं अपने डेटा स्रोत गुणों के उदाहरण के लिए कॉन्फ़िगर करना चाहता हूं default.properties। आप डेटासोर्स के लिए सेटिंग्स का उपयोग किए बिना विस्तार से जाने बिना सेटिंग्स को डेटा स्रोत पर भेज सकते हैं
Properties p = ...
datasource.setProperties(p);
हालाँकि, समस्या यह है कि Environmentवस्तु न तो कोई Propertiesवस्तु है और न ही कोई वस्तु है Map। देखने की मेरी बात से यह संभव नहीं पर्यावरण के सभी मूल्यों का उपयोग करने की, नहीं है क्योंकि वहाँ है keySetया iteratorविधि या कुछ भी तुलनीय।
Properties p <=== Environment env?
क्या मैं कुछ भूल रहा हूँ? क्या Environmentकिसी भी तरह से ऑब्जेक्ट की सभी प्रविष्टियों तक पहुंच संभव है ? यदि हाँ, मैं प्रविष्टियों को किसी ऑब्जेक्ट Mapया Propertiesऑब्जेक्ट पर मैप कर सकता हूं, तो मैं उन्हें फ़िल्टर भी कर सकता हूं या उन्हें उपसर्ग द्वारा मैप कर सकता हूं - एक मानक जावा के रूप में सबसेट बनाएं Map... यही वह है जो मैं करना चाहता हूं। कोई सुझाव?