。propertiesファイルのプロパティを@ 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」のみが設定されると予想していました。
あなたの質問に正確に答えるために...
@Value("${secret:secret}")
private String ldapSecret;
そして、例を完全にするために、さらにいくつかのバリエーションを以下に示します...
デフォルトの文字列をnullに:
@Value("${secret:#{null}}")
private String secret;
デフォルトの数値:
@Value("${someNumber:0}")
private int someNumber;
ただ使用する:
@Value("${secret:default-secret-value}")
private String ldapSecret;
@Value and Property Examples
To set a default value for property placeholder :
${property:default value}
Few examples :
//@PropertySource("classpath:/config.properties}")
//@Configuration
@Value("${mongodb.url:127.0.0.1}")
private String mongodbUrl;
@Value("#{'${mongodb.url:172.0.0.1}'}")
private String mongodbUrl;
@Value("#{config['mongodb.url']?:'127.0.0.1'}")
private String mongodbUrl;