2008-11-17 6 views
5

मैं वसंत की निर्भरता इंजेक्शन का उपयोग कर रहा हूं लेकिन मैं अपनी स्प्रिंग कॉन्फ़िगरेशन फ़ाइल में संसाधन लोड करने में कठिनाई में भाग रहा हूं।वसंत बीन्स कॉन्फ़िगरेशन

संसाधन एक एक्सएमएल फाइल है और मेरे क्लासपाथ पर एक जेएआर फाइल में है। मैं इस प्रकार के रूप में यह तक पहुँचने का प्रयास:

<import resource="classpath:com/config/resources.xml" /> 

लेकिन मैं निम्नलिखित त्रुटि का सामना बार आ रही है:

Failed to import bean definitions from URL location [classpath:com/config/resources.xml]

JAR फ़ाइल एक जावा परियोजना के classpath, जो बारी में है द्वारा इस्तेमाल किया पर है मेरी वेब अप्प। क्या मुझे जावा प्रोजेक्ट का विरोध करने के रूप में वेब प्रोजेक्ट में वास्तव में अपनी स्प्रिंग कॉन्फ़िगरेशन करनी चाहिए, या इससे कोई फर्क पड़ता है?

उत्तर

10

यदि इसे आपके वेबपैप के क्लासपाथ में होना आवश्यक है, तो आपको अपनी वेब-आईएनएफ/lib निर्देशिका में कॉन्फ़िगरेशन फ़ाइल वाले JAR को चिपकाना चाहिए। फिर आवेदन संदर्भ बाहर मछली के WebApplicationContextUtils का उपयोग

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:/com/config/resources.xml</param-value> 
</context-param> 

:

आप एक webapp का उपयोग कर रहे हैं, तो आम सम्मेलन एक ContextLoaderListener का उपयोग सुनिश्चित करने के लिए एक WebApplicationContext ServletContext में एक मानक जगह में डाला जाता है है सर्वलेट संदर्भ का उपयोग करने का:

WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); 
0

मैं वास्तव में यह क्यों महत्वपूर्ण है याद नहीं है, लेकिन कॉलन (:) classpath के सामने तारे () डालने की कोशिश:/तो थी एस काम नहीं करता है, कोलन (कक्षापाथ: *) के बाद तारांकन का प्रयास करें, हालांकि मुझे लगता है कि यह कोलन से पहले था।

+0

मुझे लगता है कि आप इसका जिक्र कर रहे हैं: http://static.springframework.org/spring/docs/2.5.x/reference/resources.html#resources-classpath-wildcards –

0

मैंने केवल जे 2 एसई में <import> निर्देश का उपयोग किया है और यह classpath: उपसर्ग के बिना काम करता है, बस <import resource="config/resources.xml" /> के रूप में। लेकिन जे 2 ईई में यदि आपकी सभी फाइलें वेब-आईएनएफ के अंदर हैं, तो यह समान होना चाहिए, बस संसाधन = "bla.xml" आयात करें और इसे ढूंढना चाहिए, हालांकि जे 2 ईई में आपको ऐसा करने की आवश्यकता नहीं है क्योंकि web.xml में web.xml के अंदर contextConfigLocation संदर्भ पैरामीटर में कई फ़ाइलों को परिभाषित कर सकते हैं, बस उन्हें रिक्त स्थान या न्यूलाइन के साथ अलग करें।

1

मैं एक लाल 5 प्लगइन के साथ एक ही मुद्दे में भाग गया। मैंने इसे हल किया:

try { 
    subContext = new FileSystemXmlApplicationContext(new String[] { "classpath*:/myconfig.xml" }, true, context); 
} catch (Exception fnfe) { 
    subContext = new FileSystemXmlApplicationContext(new String[] { "plugins/myconfig.xml" }, true, context); 
} 

यह कक्षा कोड पर कहीं भी दिखाई देगा, जिसमें मेरा कोड शामिल जार के भीतर भी होगा। यदि कोई अपवाद होता है तो प्लगइन निर्देशिका की जांच की जाती है। यह सबसे अच्छा समाधान नहीं हो सकता है लेकिन यह काम करता है।