查找与模式匹配的所有 CLASSPATH 资源

2022-09-03 09:14:21

我想读取一堆文本文件,方法是使用上下文类加载器将它们作为资源加载。

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

有没有办法获取名称与给定模式匹配的资源列表?例如:

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

像Spring这样的库可以扫描类路径以查找具有给定注释的类,所以我想知道是否有类似的东西来加载一堆资源。


答案 1

只需使用:

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

答案 2

来自“Binil Thomas”的评论是正确的,我正在寻找确认Spring的PathMatchingResourcePatternResolver可以从Java Config使用,这样我就可以将生成的“资源”列表提供给Spring Hibernate SessionFactory.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);

像吊饰一样工作。


推荐