Spring加载classpath与classpath*的区别

“classpath”: 用于加载类路径(包括jar包)中的一个且仅一个资源;对于多个匹配的也只返回一个,所以如果需要多个匹配的请考虑“classpath*:”前缀;

  1. 无论是classpath还是classpath*都可以加载整个classpath下(包括jar包里面)的资源文件。

  2. classpath只会返回第一个匹配的资源,查找路径是优先在项目中存在资源文件,再查找jar包。

  3. 文件名字包含通配符资源(如果spring-.xml,spring.xml), 如果根目录为”“, classpath加载不到任何资源, 而classpath*则可以加载到classpath中可以匹配的目录中的资源,但是不能加载到jar包中的资源

这里写图片描述

第三点的验证实例:

这里写图片描述

  • classpath:notice*.txt
    加载不到资源
  • classpath*:notice*.txt
    加载到resource根目录下notice.txt
  • classpath:META-INF/notice*.txt
    加载到META-INF下的一个资源(classpath是加载到匹配的第一个资源,就算删除classpath下的notice.txt,他仍然可以 加载jar包中的notice.txt)
  • classpath:META-/notice.txt
    加载不到任何资源
  • classpath*:META-INF/notice*.txt
    加载到classpath以及所有jar包中META-INF目录下以notice开头的txt文件
  • classpath*:META-/notice.txt
    只能加载到classpath下 META-INF目录的notice.txt

感谢大神,分析很到位
http://blog.csdn.net/zl3450341/article/details/9306983

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值