2016-01-01 11 views
13

.ymlファイルからプロパティをロードする必要があります。このファイルには、アプリケーションがファイルを読み込むことができるフォルダへのパスが含まれています。スプリングブート:YAMLファイルから@Valueをロード

私は財産を注入するには、次のコードを使用しています:

@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 

春ブーツのドキュメントは言う:

SpringApplicationは次の場所にapplication.propertiesファイルからプロパティをロードし、春の環境に追加されます:カレントディレクトリの

  1. A/configサブディレクトリ。

  2. カレントディレクトリ

  3. クラスパスの/ configパッケージ

  4. クラスパスのルート

と同様に:

また、YAMLを使用することができます( '.yml')ファイルを別名'.properties'に設定します。

{...} 
files: 
     upload: 
     baseDir: /Users/Thomas/Code/IdeaProjects/project1/files 
{...} 

そして、私のApplicationクラスがでアノテートされています:

.ymlファイルが含まれてい

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'files.upload.baseDir' in string value "${files.upload.baseDir}" 
:私は、アプリケーションを実行すると、私は例外を取得

@SpringBootApplication 
@EnableCaching 

私は持っていますか? YamlPropertySourceLoaderクラスを使用するか、特別な注釈を追加してSpringブートの.ymlのサポートを有効にしますか?

編集: .ymlファイルが正常にdataSource.XXXまたはhibernate.XXXのような春ブーツによってロードされますいくつかの他の特性を含んでいます。

+0

--debugでプログラムを実行する – Marged

+0

開発に使用したのと同じ '.yaml'ファイルで試しましたか?プロジェクトの外に出て、コマンドで実行しようとするだけです。そうすれば、ファイルの入力ミスを捨てます。 –

+3

プロパティはありません。アップロードする前にスペースが多すぎます。 –

答えて

2

M. Deinumが正しく、私が提供した設定が動作しています - ymlファイルが間違っているため、プロパティが見つかりませんでした。

0

プロパティファイルの重複キーがこれを引き起こした私にとっては...

私は、大規模なYMLファイルに無意識のうちに同じキーを使用していました。

key: 
key1: value 
key2: value 

key: 
key3: value 
関連する問題