2013-01-14 15 views
7

मैं एक मूल संदर्भ के साथ कई वसंत संदर्भ बनाने जा रहा हूं।वसंत संदर्भ पदानुक्रम

new ClassPathXmlApplicationContext(new String[] {"ApplicationContext/application.xml"}) 

और प्रत्येक माता पिता संदर्भ मैं निम्नलिखित तरीके से बनाना चाहते हैं:

PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer(); 
configurer.setProperties(properties); 
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(appContext); 
context.addBeanFactoryPostProcessor(configurer); 
context.setConfigLocation("ApplicationContext/beans.xml"); 
context.refresh(); 

विचार एक ही साथ कई बच्चे संदर्भों है यहाँ कैसे मैं माता पिता के संदर्भ बनाने के लिए जा रहा हूँ है उनमें से प्रत्येक में बीन पदानुक्रम (डीएओ, सेवाएं, डेटा स्रोत, लेनदेन प्रबंधक, आदि)। कई संदर्भों का कारण कई अलग-अलग डेटा स्रोतों (वास्तव में प्रत्येक एप्लिकेशन संदर्भ प्रति एक) की मांग में है। प्रत्येक डेटा स्रोत के लिए डेटाबेस संरचना समान है। तो, कुछ प्रश्न हैं।

  1. क्या यह संदर्भों का पदानुक्रम सुरक्षित है? उदाहरण के लिए यदि 30 बाल संदर्भ हैं?
  2. क्रॉस बाल संदर्भ बीन दृश्यता के बारे में क्या? कहें, मेरे पास ग्राहक सेवा बीन घोषित @ कॉम्पोनेंट कई स्वाभाविक डीएओ निर्भरताओं के साथ एनोटेशन है। क्या वसंत विशेष बाल संदर्भ में ऑटोवॉयरिंग और अन्य डी क्रियाएं करता है?
  3. इसके अलावा, मैं निम्नलिखित विधि का उपयोग कर बाल संदर्भ से बीन्स देखने जा रहा हूं: childContext.getBean (CustomerService.class); क्या मुझे इस विशिष्ट बाल संदर्भ से ग्राहक सेवा मिलती है, न कि अन्य बच्चे के संदर्भ में? मुझे पता है कि वसंत सिंगलटन एक आवेदन संदर्भ प्रति सिंगलटन है लेकिन अभी भी सुनिश्चित नहीं है।

पीएस। here वर्णित एकाधिक डेटा स्रोतों को संभालने का एक और तरीका है। लेकिन यह दृष्टिकोण मेरे मामले में वास्तव में सुविधाजनक नहीं लगता है।

+0

मुझे पता है कि आपका उपयोग केस बिल्कुल मेरे जैसा ही है। –

उत्तर

11
  • क्या यह संदर्भों का पदानुक्रम सुरक्षित है? उदाहरण के लिए यदि 30 बाल संदर्भ हैं?

सुरक्षा से आपका क्या मतलब है? यदि आपका मतलब बीन प्रारंभिक होने पर थ्रेड सुरक्षा है, तो हाँ, क्योंकि संदर्भ एक-एक करके शुरू किए जाते हैं।

  • क्रॉस बाल संदर्भ बीन दृश्यता के बारे में क्या? कहें, मेरे पास ग्राहक सेवा बीन घोषित @ कॉम्पोनेंट कई स्वाभाविक डीएओ निर्भरताओं के साथ एनोटेशन है। क्या वसंत विशेष बाल संदर्भ में ऑटोवॉयरिंग और अन्य डी क्रियाएं करता है?

बीन्स बच्चों के संदर्भों में दिखाई नहीं दे रहे हैं। एक संदर्भ में दिखाई देने वाले एकमात्र सेम अपने और अपने माता-पिता के संदर्भ में हैं।

  • इसके अलावा, मैं निम्नलिखित पद्धति का उपयोग करके बच्चे को संदर्भ से सेम देखने के लिए जा रहा हूँ: childContext.getBean (CustomerService.class); क्या मुझे इस विशिष्ट बाल संदर्भ से ग्राहक सेवा मिलती है, न कि अन्य बच्चे के संदर्भ में? मुझे पता है कि वसंत सिंगलटन एक आवेदन संदर्भ प्रति सिंगलटन है लेकिन अभी भी सुनिश्चित नहीं है।

हां। अंतिम प्रश्न के उत्तर के अनुसार।

मैं अपने अनुप्रयोगों में इस पैटर्न का व्यापक रूप से उपयोग करता हूं। एक सामान्य संदर्भ है जिसे कई अन्य बच्चों के संदर्भों द्वारा साझा किया जाता है जो इसे अपने माता-पिता बनाते हैं। यह बहुत उपयोगी है जब आप एक एकल जेवीएम के अंदर पूरी तरह से अलग संदर्भों को चलाने के लिए चाहते हैं, उदाहरण के लिए यदि आप एक मल्टी-किरायेदार है। फिर आप jVM को पुनरारंभ किए बिना किराये के अनुसार पाठ संदर्भों को प्रारंभ/बंद/पुनरारंभ कर सकते हैं।

यह डेटा स्रोतों और लेनदेन प्रबंधकों के स्पष्ट पृथक्करण की अनुमति देता है और किसी को आसानी से अपने डेटाबेस को दागने की अनुमति देता है।

+0

उत्तर के लिए धन्यवाद। बहु-किरायेदार वास्तुकला बिल्कुल मेरा मामला है। मैं बस अपने आवेदन में वसंत लाने के लिए वर्णित पैटर्न का उपयोग करने के लिए अनिश्चित था। "सुरक्षा" से मेरा मतलब था कि बहुत सारे वसंत संदर्भ बनाने के लिए यह अच्छा अभ्यास है। जैसा कि आपने कहा था कि आप इस पैटर्न का व्यापक रूप से उपयोग कर रहे हैं, इसलिए यह ठीक लगता है। – alsid

+0

मैं वसंत माता-पिता/बाल संदर्भ उपयोग मामलों के लिए खोज रहा हूं। क्या आप बहु-किरायेदार वास्तुकला की तुलना में अन्य उपयोग मामले जानते हैं? क्या आपने पिछले 2 सालों में अपना समाधान संशोधित किया था? – michaldo

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