Springboot中的ClassPathResource

现象

在获取resource目录下的文件时,我发现一个现象:

如图,我分别在classpath和resourcepath下放了两个文件,然后使用ClassPathResource去获取这两个文件,使用相同的路径形式,我发现它们竟然可以被正确找到

原因

Springboot中定义了很多资源加载器,其中就有两个文件资源加载器

sun.misc.URLClassPath

使用ClassPathResource传入一个路径时,它就会遍历这些加载器,若某路径存在该文件,则返回,否则抛出IOException

sun.misc.URLClassPath

jar包问题

当把项目打成jar包之后,本来正常读取resource的代码又报文件找不到异常。

以后有机会再看看这种问题的最佳实践

当前最好的方法还是将一些文件放在项目以外的路径中保存

Leave a Comment