0

私の問題:変数Fileを使用してクラスにa を挿入するにはどうすればよいですか?Environment

properties読み取る必要があるファイルのパスを指定します。

myFile.path=classpath:myFile.json

property-placeholder以前は、そのために を定義する XML アプリケーション コンテキストを使用していproperties.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 に答える