Spring中的PathMatchingResourcePatternResolver用于搜索资源

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

(http://blog.csdn.net/inthirties/archive/2009/08/27/4490407.aspx)已经提到过,

 注意:

今天遇到一个问题, PathMatchingResourcePatternResolver.getResources()时总时找不到jar包中的资源, 但在IDE工程中却没有问题, 足足困扰了5个小时, 经过一番仔细研究发现问题出在打jar上, 原因是利用eclipse的export打jar包没有建立实体目录, 导出时记得钩选"Add directory entries"选项就解决问题, 如图:

Spring PathMatchingResourcePatternResolver查找jar包资源找不到的原因 - 村里MU地 - 村里MU地

觉得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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值