2011-08-11 14 views
27

में क्लासपाथ संसाधन इंजेक्शन करना मेरे स्प्रिंग 3 बीन में Resource प्रकार की एक संपत्ति है जिसे क्लासपाथ में किसी फ़ाइल के संदर्भ के साथ इंजेक्शन दिया जाना चाहिए। उम्मीद है कि मैं इसे प्राप्त करने के लिए नीचे @ वैल्यू एनोटेशन का उपयोग करें।स्प्रिंग 3 बीन

public class TestBean 
{ 
    @Value("classpath:/abc/student/test.sql") 
    private Resource SqlFile; 
    ... 
} 

लेकिन संपत्ति हमेशा शून्य है। मैंने पुष्टि की है कि एसक्यूएल फ़ाइल को मैवेन लक्ष्य निर्देशिका में तैनात किया गया है (यह लक्ष्य/कक्षा/एबीसी/छात्र/test.sql पर है)।

निकटतम समाधान जो मैं Google कर सकता था this और this जो एक्सएमएल मार्ग का विस्तार करता है जबकि मुझे एनोटेशन का उपयोग करके ऐसा करने में दिलचस्पी है।

किसी भी पॉइंटर्स की सराहना करें कि यहां क्या गलत हो सकता है।

धन्यवाद,

विजय

उत्तर

39

ऐसा हार्ड-कोडेड होने जा रही है, तो सिर्फ

private Resource sqlFile = new ClassPathResource("/abc/student/test.sql"); 

अन्यथा, क्या तुम सच में हो जाने के बाद कर रहे हैं

@Value("${some.property}") 
private Resource sqlFile; 

और मुझे विश्वास है कि संपत्ति मूल्य इंजेक्शन में, सही PropertyEditor लागू किया जाएगा।

+1

सहमत - देखें http://stackoverflow.com/questions/6392406/populate-spring-beans-file-field-via-annotation/6392724#6392724 – sourcedelica

+0

आपके उत्तरों के लिए धन्यवाद। दोनों समाधान काम किया। मैंने @ वैल्यू दृष्टिकोण को प्राथमिकता दी क्योंकि यह मेरे कोड से स्प्रिंग कक्षाओं पर निर्भरता की अनुमति नहीं देता है। –

+0

आप जानते हैं कि @ वैल्यू एक वसंत वर्ग है? – Wes

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