हम वर्तमान में एक एप्लिकेशन लिख रहे हैं जो कई प्रोजेक्ट्स / मॉड्यूल में विभाजित है। उदाहरण के लिए, चलिए निम्नलिखित मॉड्यूल लेते हैं:
- MyApp-डीएओ
- MyApp-अस्पष्ट
प्रत्येक मॉड्यूल की अपनी स्प्रिंग संदर्भ xml फ़ाइल होती है। DAO मॉड्यूल के लिए मेरे पास एक PropertyPlaceholderConfigurer है जो आवश्यक db कनेक्शन मापदंडों के साथ एक संपत्ति फ़ाइल पढ़ता है। जैबर मॉड्यूल में मेरे पास प्रॉपर्टीप्लेसहॉल्डरकॉन्फिगर जब्बार कनेक्शन संपत्तियों के लिए भी है।
अब मुख्य एप्लिकेशन आता है जिसमें myApp-DAO और myApp-jabber शामिल हैं। यह सभी संदर्भ फ़ाइलों को पढ़ता है और एक बड़ा स्प्रिंग संदर्भ शुरू करता है। दुर्भाग्य से ऐसा लगता है कि प्रति संदर्भ में केवल एक प्रॉपर्टीहोल्डरकॉन्फिगरर हो सकता है, इसलिए जो भी पहले लोड किया जाता है, वह कनेक्शन मापदंडों को पढ़ने में सक्षम है। अन्य एक त्रुटि के साथ एक अपवाद को फेंक देता है जैसे "प्लेसहोल्डर 'jabber.host' को हल नहीं कर सका"
मैं एक तरह से समझता हूं कि समस्या क्या है, लेकिन मैं वास्तव में एक समाधान नहीं जानता - या मेरे usecase के लिए सबसे अच्छा अभ्यास।
मैं प्रत्येक मॉड्यूल को कैसे कॉन्फ़िगर करूंगा ताकि प्रत्येक अपनी संपत्ति फ़ाइल लोड करने में सक्षम हो? अभी मैंने PropertyPlaceHolderConfigurer को अलग-अलग संदर्भ फ़ाइलों से बाहर निकाल दिया है और उन्हें मुख्य अनुप्रयोग के संदर्भ में विलय कर दिया है (सभी संपत्ति फ़ाइलों को एक एकल PropertyPlaceHolderConfigurer के साथ लोड कर रहा है)। हालांकि यह बेकार है, क्योंकि अब हर कोई जो दाओ मॉड्यूल का उपयोग करता है, उसे यह जानना होगा कि उन्हें उनके संदर्भ में एक PropertyPlaceHolderConfigurer की आवश्यकता है .. साथ ही दाव मॉड्यूल में एकीकरण परीक्षण विफल आदि।
मैं stackoverflow समुदाय से समाधान / विचारों के बारे में सुनने के लिए उत्सुक हूँ ..