Spring @Value アノテーション付きメソッド、プロパティが利用できない場合はデフォルト値を使用する 質問する

Spring @Value アノテーション付きメソッド、プロパティが利用できない場合はデフォルト値を使用する 質問する

状況

私はプロパティを注入しています。プロパティ注釈の付いたフィールドにファイルを@価値ただし、このプロパティは機密性の高い資格情報を提示するため、リポジトリから削除します。ただし、誰かがプロジェクトを実行したいが、資格情報を含む .properties ファイルを持っていない場合に備えて、デフォルト値がフィールドに設定されるようにします。

問題

フィールド自体にデフォルト値を設定しても、.properties ファイルが存在しない場合は例外が発生します。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxx': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'secret' in string value "${secret}"

注釈が付けられたフィールドは次のとおりです。

 @Value("${secret}")
 private String ldapSecret = "secret";

この場合、単純な文字列「secret」が設定されるものと予想しました。

ベストアンサー1

あなたの質問に正確に答えると...

@Value("${secret:secret}")
private String ldapSecret;

例を完全を期すために、さらにいくつかのバリエーションを以下に示します。

文字列を null にデフォルト設定する:

@Value("${secret:#{null}}")
private String secret;

数値をデフォルトにする:

@Value("${someNumber:0}")
private int someNumber;

おすすめ記事