0

我的问题:如何使用变量File在我的班级中注入 a ?Environment

我在properties需要读取的文件的路径中指定:

myFile.path=classpath:myFile.json

我曾经有一个 XML 应用程序上下文为此定义一个property-placeholderproperties.file然后我可以简单地使用注入我的文件@Value

@Value("${myFile.path}")
private File myFile;

然而,现在我想做类似的事情:

@Inject
private Environment environment;

private File myFile;

@PostConstruct
private void init() {
    myFile = environment.getProperty("myFile.path", File.class);
}

但是抛出异常:

Caused by: java.io.FileNotFoundException: 
    classpath:myFile.json (No such file or directory)

我也尝试过类似myFile = environment.getProperty("myFile.path", Resource.class).getFile();的方法,但抛出了另一个异常。

知道属性中定义的路径可以是绝对路径或类路径相对路径,如何实现注入文件?

4

1 回答 1

2

您可以尝试注入ResourceLoader,并使用它来加载引用的类路径资源:

@Autowired
private ResourceLoader resourceLoader;

...

@PostConstruct
private void init() {
    String resourceReference = environment.getProperty("myFile.path");
    Resource resource = resourceLoader.getResource(resourceReference);
    if (resource != null) {
        myFile = resource.getFile();
    }
}
于 2013-04-15T09:01:29.107 回答