以上的操作有一个共同的问题,那么就是必须设置好完整的路径,但是很多时候无法一一设计完整路径。
例如:在不同的目录下都会存在有"applicationContext-XXX.xml"命名的结构:
如果想要将其完整的读取进来,那么就必须考虑到路径的通配符使用,在Spring之中继续发扬了ANT工具的特征.而在这个工具下提供有几种符号:
"?": 匹配任意一位字符,例如"applicationContext-?.xml"表示可以访问"applicationContext-1.xml","applicationContext-2.xml";
"*": 匹配零个,一个或多个字符,例如:“applicationContext-*.xml”,“applicationContext-1234.xml”。
"**": 表示匹配任意的目录,可以零个,一个或多个。
一旦要进行多个路径的匹配那么返回的内容也是多个,此时需要另一个接口:
org.springframework.core.io.support
Interface ResourcePatternResolver
可以使用其子类:
org.springframework.core.io.support
Class PathMatchingResourcePatternResolver
范例:读取资源文件
public class ClassPathMany {
public static void main(String[] args)throws Exception {
ResourcePatternResolver loader = new PathMatchingResourcePatternResolver();
Resource[] resources = loader.getResources("classpath:cn/jcn/test/**/applicationContext-?.xml");
for (int i = 0; i < resources.length; i++) {
System.out.println("文件名称:" + resources[i].getFile()
+ "数据长度:" + resources[i].contentLength());
}
}
}
输出结果:
文件名称:D:\Java实例\SpringResource\WebRoot\WEB-INF\classes\cn\jcn\test\applicationContext-1.xml数据长度:645
文件名称:D:\Java实例\SpringResource\WebRoot\WEB-INF\classes\cn\jcn\test\applicationContext-2.xml数据长度:645
文件名称:D:\Java实例\SpringResource\WebRoot\WEB-INF\classes\cn\jcn\test\demo\applicationContext-c.xml数据长度:645
在Spring里面目录的访问不再成为限制。