Spring:在加载之前检查类路径资源是否存在

Sas*_*ota 4 java spring spring-boot

我有一个代码,我需要检查类路径资源是否存在并应用一些操作。

File file = ResourceUtils.getFile("classpath:my-file.json");
if (file.exists()) {
    // do one thing
} else {
    // do something else
}
Run Code Online (Sandbox Code Playgroud)

问题: 如果资源不存在则ResourceUtils.getFile()抛出FileNotFoundException。同时我不想对代码流使用异常,我想检查资源是否存在。

问题:有没有办法使用 Spring 的 API 来检查资源是否存在?

为什么我需要用 Spring 来完成这个:因为如果没有 spring,我需要自己选择一个不方便的正确的类加载器。我需要有不同的代码才能使其在单元测试中工作。

Spr*_*r F 6

您可以使用ResourceLoader 接口来加载使用getResource(),然后使用Resource.exists()检查文件是否存在。

@Autowired
ResourceLoader resourceLoader;  

Resource resource = resourceLoader.getResource("classpath:my-file.json");
if (resource.exists()) {
  // do one thing
} else {
  // do something else
}
Run Code Online (Sandbox Code Playgroud)