アプリケーションがファイルを読み取ることができるフォルダーへのパスを含む.yml
ファイルからプロパティをロードする必要があります。
次のコードを使用してプロパティを注入しています。
@Value("${files.upload.baseDir}")
private String pathToFileFolder;
開発用の.yml
ファイルはsrc/main/resources/config/application.yml
の下にあり、本番環境で次のコマンドを使用してアプリケーションを実行し、開発設定をオーバーライドします。
Java -jar app.jar --spring.config.location=/path/to/application-production.yml
Spring Bootのドキュメントには次のように書かれています。
SpringApplicationは、次の場所にあるapplication.propertiesファイルからプロパティをロードし、それらをSpring環境に追加します。
現在のディレクトリの/ configサブディレクトリ。
現在のディレクトリ
クラスパス/ configパッケージ
クラスパスのルート
と同様:
'.properties'の代わりにYAML( '.yml')ファイルを使用することもできます。
.yml
ファイルには次が含まれます。
{...}
files:
upload:
baseDir: /Users/Thomas/Code/IdeaProjects/project1/files
{...}
そして、私のApplication
クラスには以下のアノテーションが付けられています:
@SpringBootApplication
@EnableCaching
アプリケーションを実行すると、例外が発生します。
Caused by: Java.lang.IllegalArgumentException: Could not resolve placeholder 'files.upload.baseDir' in string value "${files.upload.baseDir}"
Spring Bootで.yml
のサポートを有効にするには、YamlPropertySourceLoader
クラスを使用するか、特別な注釈を追加する必要がありますか?
編集:.yml
ファイルには、dataSource.XXX
やhibernate.XXX
など、Spring Bootによって正常にロードされる他のプロパティがいくつか含まれています。
M. Deinumは正しい、私が提供したセットアップは機能している-yml
ファイルのインデントが間違っていたため、プロパティが見つからなかった。
私にとっては、プロパティファイルの重複キーがこれを引き起こしました...
大きなymlファイルで同じキーを知らずに使用しました。
key:
key1: value
key2: value
key:
key3: value