2012-08-17 14 views
9

मैंने कुछ वसंत कोड देखा है जो classpath:/some/path/to/resource यूआरएल प्रोटोकॉल का उपयोग कर रनटाइम क्लासपाथ से सीधे कॉन्फ़िगरेशन फ़ाइलों और अन्य संसाधनों को पढ़ता है।जावा यूआरएल प्रोटोकॉल: क्लासपाथ: /?

क्या यह एक वसंत निर्माण या जावा निर्माण है?

मुझे इस प्रश्न के अलावा कोई दस्तावेज नहीं मिल रहा है - URL to load resources from the classpath in Java, जो किसी भी तरह से संकेत नहीं देता है।

यदि यह जावा निर्माण है, तो क्या कोई मुझे अपने आधिकारिक दस्तावेज पर इंगित कर सकता है?

+0

मैं 'संसाधन लोडर' अबास्ट्रक्शन के बारे में पढ़ने का सुझाव देता हूं: http://static.springsource.org/spring/docs/3.0.x/reference/resources.html#resources-resourceloader –

उत्तर

11

ठीक है आप हमेशा यूआरएल हैंडलर पंजीकृत कर सकते हैं। जावा में एक फ़ाइल भी है: /// और जार: हैंडलर। क्लासपार्ट से डिफ़ॉल्ट रूप से class.getResource भी पढ़ा जाएगा।

http://code.google.com/p/madura-classpath-protocol-handler/

जाहिरा तौर पर यह एक वसंत सुविधा है।

"आप जेडीके की आरटी.जेएआर फ़ाइल में इन मानक हैंडलर और संबंधित कार्यान्वयन कक्षाएं देख सकते हैं। उन कक्षाओं की तलाश करें जिनके पूर्ण-योग्य नाम sun.net के साथ शुरू होते हैं। Http://www.protocol. उदाहरण के लिए, कक्षा सूर्य। net.www.protocol.http. हैंडलर HTTP प्रोटोकॉल हैंडलर को परिभाषित करता है। क्लास sun.net.www.protocol.ftp. हैंडलर एफ़टीपी प्रोटोकॉल हैंडलर क्लास को परिभाषित करता है। "

http://java.sun.com/developer/onlineTraining/protocolhandlers/

मुख्य "सूत्र में अपवाद" "java.net.MalformedURLException: अज्ञात प्रोटोकॉल: classpath" (कहते जावा 1.6)

+0

कूल टिप्स! मुझे नहीं पता था कि आप अपने हैंडलर पंजीकृत कर सकते हैं (+1)! लेकिन क्या आपको पता है कि 'क्लासपाथ' एक यूआरएल हैंडलर स्प्रिंग द्वारा परिभाषित/पंजीकृत है, या यदि यह जावा के साथ जहाज है? एक बार फिर धन्यवाद! – IAmYourFaja

+0

मुझे लगता है कि यह एक अंतर्निहित वसंत विशेषता है (उस लिंक को देखकर) –

4

classpath: वसंत के लिए विशिष्ट है। वसंत के संसाधन समाधान तंत्र (यानी PathMatchingResourcePatternResolver या अन्य अनुकरण) "classpath:" और "वर्गपाथ *:" उपसर्गों के बारे में जानता है।

यह ClassPathResource ऑब्जेक्ट्स में हल करता है और हल करता है, जो स्प्रिंग्स Resource इंटरफ़ेस को लागू करने के लिए होता है।

Resource इंटरफ़ेस, अन्य चीज़ों के साथ, getInputStream() विधि है जिसका उपयोग सामग्री को प्राप्त करने के लिए किया जा सकता है, बिना किसी संसाधन के यह जाने बिना।

यह किसी भी यूआरएल प्रोटोकॉल हैंडलिंग से पूरी तरह से अलग है, इसलिए आप इसे प्रोटोकॉल हैंडलर के रूप में सीधे जोड़ने में सक्षम नहीं होंगे।

हालांकि, आप अपने प्रोटोकॉल हैंडलर के हिस्से के रूप में ClassPathResource कक्षा का कुछ उपयोग करने में सक्षम हो सकते हैं।

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