Spring学习系列:错误记录(二) : 类路径和resource目录的关系

问题起因

今天在看书的时候看到Spring里资源访问部分,有个从类路径寻找资源文件的类叫做ClassPathResource,他的祖先类是Resource,可以从类路径跟目录寻找资源文件。但是在我写代码试验的时候发现总是找不到资源文件导致频频报错。

以上提到的类均是指spring 框架提供的

问题“解决”

后来我意识到我犯了一个大错误,这里的从类根目录加载文件指的是便宜好的存放.class文件的目录,而不是源文件类的目录(基础知识不扎实)。于是我尝试去读取.class文件

public class Demo {
    public static void main(String[] args) {
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource resource = new ClassPathResource("com/yeonon/Demo.class");    
        System.out.println(resource.exists());
    }
}

结果返回的是True,但是如果我换成Demo.java,结果返回的就是False了,说明从“从类的路径查找文件”这句话的意思应该是从编译好的存放.class文件目录查找,这似乎解决了问题。

“风波再起”

现在我们是知道在哪里读取文件了,最直接的办法是把资源文件(例如beans.xml)放到编译好的目录中去,好像这就能解决问题了。但是,到时候程序发布的时候是不可能连同这个目录一起发布的,那该怎么办呢?这时候就要利用resources这个目录了(好像这是Spring建议创建的一个资源目录),将文件放入这个目录就能正确的读取文件了。

为什么能直接从resources目录读取,目前我不清楚是IDEA的功劳还是Spring的功劳。

最后

这次错误主要是不能理解“类路径下查找”这句话的意思,归根结底还是java基础不扎实。顺便说一下资源查找还有一种方法比较方便:

        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource resource = resolver.getResource("classpath:beans.xml");

配个书上的图吧:
来自《精通Spring4.x》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值