2012-12-21 59 views
14

मैं कुछ स्प्रिंग एक्सएमएल कॉन्फ़िगरेशन फ़ाइलों पर काम कर रहा हूं और कभी-कभी वे "classpath:/datasource.xml" और कभी-कभी "classpath:datasource.xml" का उपयोग करते हैं। क्या दोनों के बीच कोई अंतर है या अग्रणी / वैकल्पिक/निहित/अनावश्यक है?स्प्रिंग एक्सएमएल में "क्लासपाथ:" और "क्लासपाथ: /" के बीच क्या अंतर है?

+0

मुझे इन दोनों के बीच कोई अंतर नहीं दिख रहा है। सबसे बड़ा अंतर जो आप देखेंगे वह है कि क्लासपाथ स्थान पर सापेक्ष पथ और *। – muruga

+0

@ मुरुगा असल में, मैंने यह भी देखा है, इसका क्या अर्थ है? – ArtB

उत्तर

18

मुझे इन दोनों के बीच कोई अंतर नहीं दिखता है।
"classpath: सबसे बड़ा अंतर यह है कि आप देखेंगे कि रिश्तेदार पथ और classpath स्थान

यहाँ पर * Spring Resources से एक अंश है, खंड के लिए खोजें 4.7.2.2

क्लासपाथ * है *: "उपसर्ग को शेष स्थान पथ में पथमैचर पैटर्न के साथ भी जोड़ा जा सकता है, उदाहरण के लिए" क्लासपाथ *: मेटा-आईएनएफ/* - beans.xml "। इस मामले में, रिज़ॉल्यूशन रणनीति काफी सरल है: कक्षा लोडर पदानुक्रम में सभी मिलान संसाधनों को प्राप्त करने के लिए अंतिम गैर-वाइल्डकार्ड पथ सेगमेंट पर क्लासलोडर.getResources() कॉल का उपयोग किया जाता है, और उसके बाद प्रत्येक संसाधन को समान पथमाटर संकल्प रणनीति ऊपर वर्णित वाइल्डकार्ड उपपथ के लिए प्रयोग किया जाता है।

इसका मतलब है कि "वर्गपाथ *: *। Xml" जैसे पैटर्न जार फ़ाइलों की जड़ से फ़ाइलों को पुनर्प्राप्त नहीं करेंगे बल्कि विस्तारित निर्देशिकाओं की जड़ से ही पुनर्प्राप्त नहीं होंगे। यह जेडीके के क्लासलोडर.getResources() विधि में एक सीमा से निकलता है जो केवल पास की खाली स्ट्रिंग के लिए फ़ाइल सिस्टम स्थानों को लौटाता है (संभावित जड़ों को खोजने के लिए इंगित करता है)।