是否可以使用@Value
从Maven的test / resources目录中加载文件/资源?
例如像这样的东西:
@Value("${test/resources/path/to/file}") File file
编辑:
我尝试过:
@Value("${someFile}") FileSystemResource file;
但是在运行时,我看到它代表工作目录,而不是测试/资源中的文件
答案 0 :(得分:1)
测试/资源中的任何内容都将在测试阶段之前复制到目标/测试类。这些复制的资源将在类路径上可用。
如果您在测试类中启动Spring Configuration,则将为类路径资源提供一个绑定,使您可以像这样注入它们:
@Value("classpath:path/to/file")
Resource resourceFile;
不需要文件,因为它也可能来自类路径上的jar文件,但是您可以通过InputStream等读取它。
答案 1 :(得分:0)
不确定是否有直接方法可以执行此操作。
这是我们用来通过构造函数初始化它的另一种方法:
@RestController
public class FileController {
private File file;
public FileController(@Value("${file-name}") String filename) {
file = new File(filename);
}
}