2010-05-04 15 views
8

से मेल खाने वाले सभी क्लासस्पैट संसाधनों को ढूंढना, मैं संदर्भ क्लासलोडर का उपयोग करके संसाधनों के रूप में लोड करके टेक्स्ट फ़ाइलों का एक समूह पढ़ना चाहता हूं।एक पैटर्न

URL url = Thread.currentThread() 
       .getContextClassLoader() 
       .getResource("folder/foo.txt"); 

क्या संसाधनों की सूची प्राप्त करने का कोई तरीका है जिनके नाम किसी दिए गए पैटर्न से मेल खाते हैं? उदाहरण के लिए:

URL[] matchingUrls = someLibrary.getMatchingResources("folder/*.txt"); 

पुस्तकालय स्प्रिंग की तरह classpath किसी दिए गए टिप्पणी के साथ कक्षाएं लगाने के लिए स्कैन कर सकते हैं, इसलिए यदि वहाँ कुछ इसी तरह के संसाधनों का एक गुच्छा लोड करने के लिए मैं सोच रहा हूँ।

उत्तर

4

वसंत चींटी शैली वर्ग पथ संसाधन मिलान का समर्थन करता है।

http://static.springsource.org/spring/docs/2.5.x/reference/resources.html

उदाहरण की तरह: आप अपनी परियोजना के लिए वसंत का उपयोग कर सकते अगर classpath:com/mycompany/**/applicationContext.xml, /WEB-INF/*-context.xml

देखें। यदि यह संभव नहीं है तो आप हमेशा नीचे स्रोत कोड को देखने के लिए वे क्या कर रहे खींच सकते हैं, और है कि अपने आप को :)

+3

org.springframework.core.io.support.PathMatchingResourcePatternResolver.java वर्ग काम कर रही हो रहा है। हालांकि, मैं अपने आवेदन में वसंत का उपयोग नहीं कर सकता। :( –

2

आप मक्का-सीपीएस

List<URL> resources = CPScanner.scanResources(new PackageNameFilter("net.sf.corn.cps.*"), new ResourceNameFilter("*.xml")); 

उपयोग निर्भरता में नीचे की कोशिश कर सकते अपने pom.xml "Binil थॉमस" से

<dependency> 
    <groupId>net.sf.corn</groupId> 
    <artifactId>corn-cps</artifactId> 
    <version>1.0.1</version> 
</dependency> 
7

टिप्पणी सही रास्ते पर था, मैं पुष्टि करने के लिए देख रहा था कि वसंत के PathMatchingResourcePatternResolver जावा कॉन्फ़िग से इस्तेमाल किया जा सकता है, ताकि मैं स्प्रिंग के परिणामस्वरूप "संसाधन" सूची दे सकता है Hibernate सत्र Factory.mappingLocations के साथ बाहर हर बार एक नई मैपिंग फ़ाइल जोड़ा गया है जब Hibernate * .hbm.xml फ़ाइलों की सूची अद्यतन करने के लिए। मैं PathMatchingResourcePatternResolver नीचे कोड का उपयोग कर के साथ इस लक्ष्य को हासिल करने में सक्षम था:

import org.hibernate.SessionFactory; 
import org.springframework.core.io.Resource; 
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; 
import org.springframework.core.io.support.ResourcePatternResolver; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBean; 
... 
ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver(); 
Resource [] mappingLocations = patternResolver.getResources("classpath*:mappings/**/*.hbm.xml"); 
sessionFactory.setMappingLocations(mappingLocations); 

वर्क्स एक आकर्षण की तरह।

+1

बिल्कुल सही। बस मुझे क्या चाहिए। –

8

बस का उपयोग करें:

@Value("classpath:folder/*.xml") 
Resource[] resources; 
+0

मुझे पिछले तीन वर्षों में इस तीन में से तीन बार जरूरी है, और यह अब तक का सबसे अच्छा समाधान है। ओपी ने वसंत किया, लेकिन यह चाल सुनिश्चित करता है कि यह आसान हो कक्षापथ से संसाधनों के पैटर्न प्राप्त करने के लिए, और मेरी स्थिति के लिए महान काम करता है। – gbegley

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