0
点赞
收藏
分享

微信扫一扫

Spring-core里的查找Resource的好东西


需要做configuration的模块,研究了list的用法,在帖子"Spring的Resource配置"

 

觉得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();
}

 



举报

相关推荐

0 条评论