2012-05-02 19 views
8

मुझे पता है कि:कक्षा पथ, फ़ाइल सिस्टम के बीच क्या अंतर है?

  1. ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

    एक एक्सएमएल classpath में स्थित फ़ाइल, classpath संसाधनों के रूप में संदर्भ परिभाषाओं के इलाज से लोड संदर्भ परिभाषा। फाइल सिस्टम में एक XML फ़ाइल से

  2. ApplicationContext context = new FileSystemXmlApplicationContext("bean.xml");

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

  3. XmlWebApplicationContext

    भार संदर्भ परिभाषा।

लेकिन, इसका क्या अर्थ है ??

धन्यवाद :)

+4

सेट किया गया है आप पहले से ही बताया कि कैसे वे उपयोग में अलग हैं DONOT।आंतरिक रूप से उनके पास अलग-अलग व्यवहार हैं जैसे XmlWebAplicationContent डिफ़ॉल्ट रूप से WEB-INF फ़ोल्डर में applicationContext.xml की तलाश करेगा। और यह अलग-अलग स्थान को कॉन्फ़िगर करने के लिए init पैरामीटर भी लेता है। असल में वे एक्सएमएल फाइलों को लोड करने के लिए विभिन्न दृष्टिकोणों का उपयोग करेंगे। – Seshagiri

उत्तर

16
  • ClassPathXmlApplicationContext अपने classpath से फाइल पढ़ा जाएगा। वे आपके lib फ़ोल्डर में classes अपने वेब एप्लिकेशन के फ़ोल्डर में या jar में होना चाहिए।

  • FileSystemXmlApplicationContext आपके सभी फाइल सिस्टम तक पहुंच सकता है, उदाहरण के लिए c:/config/applicationContext.xml

  • XmlWebApplicationContext निश्चित रूप से आपके वेब एप्लिकेशन में निहित फ़ाइलों तक पहुंच सकते हैं, लेकिन यह सबसे महत्वपूर्ण बात नहीं है। यह WebApplicationContext लागू करता है और इसका मतलब है कि यह ServletContextAware बीन्स का पता लगाएगा, अन्य चीजों के साथ कस्टम स्कॉप्स (अनुरोध, सत्र, ...) पंजीकृत करेगा।

+0

मैं वही चाहता हूं। धन्यवाद :) –

0

मुझे लगता है कि इसके बाद के संस्करण की राय कुछ गलत, FileSystemXmlApplicationContextअपने पूरे फाइल सिस्टम उपयोग नहीं कर सकते हो सकता है, क्या यह केवल स्कैन कर सकते हैं, अपने पूरे परियोजना आदेश मेरा निष्कर्ष साबित करने के लिए folder.In मैं एक उदाहरण बनाने के पहले ClasspathXmlApplicationContext का उपयोग करके और सब कुछ सामान्य है, दूसरी बार जब मैं beans.xml फ़ाइल को अपने डेस्कटॉप फ़ोल्डर में ले जाता हूं, तो प्रोजेक्ट हिराची में कोई बीन्स.एक्सएमएल फ़ाइल नहीं है, और क्लासपाथएक्सएक्सप्लिकेशन कॉन्टेक्स्ट को FileSytemXmlApplicationContext में बदलें और कुछ गलत हो गया है, नीचे त्रुटि का निशान:

INFO: Loading XML bean definitions from file [/Users/crabime/Development/IdeaProjects/springInterview/Users/crabime/Desktop/beans.xml] 
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [/Users/crabime/Development/IdeaProjects/springInterview/Users/crabime/Desktop/beans.xml]; nested exception is java.io.FileNotFoundException: Users/crabime/Desktop/beans.xml (No such file or directory) 

तो एफ ileSystemXmlAplicationContext केवल सभी प्रोजेक्ट को वर्तमान प्रोजेक्ट का पता लगा सकता है। उदाहरण के लिए यदि आप एक निर्देशिका जो परियोजना रूट निर्देशिका के अंतर्गत config नामित करते हैं, और आप नीचे की तरह अपने मुख्य वर्ग कोड बदल सकते हैं:

ApplicationContext atx = new FileSystemXmlApplicationContext("/config/beans.xml"); 

और सब कुछ ठीक फिर से होगा। तो अगर sinuhepop की तरह सभी ने कहा कि मुझे लगता है कि कुछ बदलने की जरूरत है।

0

FileSystemXmlApplicationContext- आप एक्सएमएल सेम ClassPathXmlApplicationContext की पूरी पूर्ण पथ प्रदान करने के लिए की जरूरत है - इस मामले में आप, पूरा पथ सेट करने के लिए जब तक जरूरत के रूप में classpath

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