【问题标题】:Load resource/file from test/resources using Spring使用 Spring 从测试/资源加载资源/文件
【发布时间】:2020-08-28 01:05:39
【问题描述】:

是否可以使用 @Value 从 Maven 的 test/resources 目录加载文件/资源​​?

例如像这样:

@Value("${test/resources/path/to/file}") File file 

编辑:

我试过这个:

@Value("${someFile}") FileSystemResource file;

但在运行时我看到它代表工作目录而不是 test/resources 中的文件

【问题讨论】:

  • 没有test/resources,因为它是类路径的一部分,所以删除test/resources 部分。

标签: java spring spring-boot maven spring-boot-test


【解决方案1】:

测试/资源中的任何内容都会在测试阶段之前复制到目标/测试类。这些复制的资源将在类路径中可用。

如果您在测试类中启动 Spring 配置,则类路径资源的绑定允许您像这样注入它们:

   @Value("classpath:path/to/file")
   Resource resourceFile;

不需要文件,因为它也可以来自类路径上的 jar 文件,但您可以通过 InputStream 等读取它。

【讨论】:

    【解决方案2】:

    不确定是否有直接的方法可以做到这一点。

    这是我们用来通过构造函数初始化它的替代方法:

    @RestController
    public class FileController {
    
        private File file;
    
        public FileController(@Value("${file-name}") String filename) {
            file = new File(filename);
        }
    
    }
    

    【讨论】:

    • 这里,问题还是一样:要么是相对于当前工作目录,要么必须是绝对文件路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2012-11-21
    相关资源
    最近更新 更多