状況
私はプロパティを注入しています。プロパティ注釈の付いたフィールドにファイルを@価値ただし、このプロパティは機密性の高い資格情報を提示するため、リポジトリから削除します。ただし、誰かがプロジェクトを実行したいが、資格情報を含む .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;