需要做configuration的模块,研究了list的用法,在帖子"Spring的Resource配置"
(http://blog.csdn.net/inthirties/archive/2009/08/27/4490407.aspx)已经提到过,
觉得spring这个功能还不错,所以那到代码看了看其中的实现,找到了PathMatchingResourcePatternResolver
这个类,这个类的接口如下
public Resource getResource(String location)
public ResourceLoader getResourceLoader()
public Resource[] getResources(String locationPattern)
public PathMatcher getPathMatcher()
这里的getResources和getResource就是spring处理list的resouce查找的实现类。
这里可以支持文件和classpath的查找方式。
看他的文档,支持
No Wildcards:
如果不是以classpath*:开头的话,他就不会使用PathMatcher pattern,
file:C:/context.xml
classpath:/context.xml
/WEB-INF/context.xml -- 这个会使用到特定的ServletContextResource for a WebApplicationContext
Ant-style pattern:
支持Ant style pattern
/WEB-INF/*-context.xml
com/mycompany/**/applicationContext.xml
file:C:/some/path/*-context.xml
classpath:com/mycompany/**/applicationContext.xml
classpath*: Prefix
这个是最强的classpath*:
classpath*:META-INF/*-beans.xml
classpath*:com/**/Driver.class
通过这些方式,我们做lookup resouce就很方便了
sample代码
PathMatchingResourcePatternResolver resolover = new PathMatchingResourcePatternResolver();
try
{
Resource[] resources = null;
resources = resolover.getResources("file:E:/information/personal/workspace/poc/synchrophy/framework/src/test/synchrophy/com/sunvalley/framework/test/configuration/init*.properties");
System.out.println(resources.length);
resources = resolover.getResources("classpath*:/com/**/Driver.class");
System.out.println(resources.length);
resources = resolover.getResources("classpath*:/META-INF/*.schemas");
System.out.println(resources[0].getURL());
resources = resolover.getResources("classpath*:com/synchrophy/**/*ui.properties");
System.out.println(resources.length);
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}