Spring Beanには次のものがあります。
@Value("${myValue}")
private String value;
値は正しく挿入されます。ただし、変数はオプションである必要があり、コマンドラインパラメーターとして渡され(SimpleCommandLinePropertySourceを使用してSpringコンテキストに追加されます)、この引数は常に存在するとは限りません。
デフォルト値を提供するために、次の両方を試しました。
@Value("${myValue:}")
@Value("${myValue:DEFAULT}")
しかし、いずれの場合でも、実際の値がある場合でもコロンの後のデフォルト引数が注入されます-これは、Springが注入すべきものをオーバーライドするように見えます。
@ Valueが不要であることを指定する正しい方法は何ですか?
ありがとう
@Valueが不要であることを指定する正しい方法は何ですか?
「不要」とはnull
を意味するという仮定に基づいて作業する場合...
_:
_文字の右側にデフォルト値を指定できることに注意してください。あなたの例は@Value("${myValue:DEFAULT}")
でした。
デフォルト値としてプレーンな文字列に限定されません。 [〜#〜] spel [〜#〜] 式を使用でき、null
を返す簡単なSPEL式は次のとおりです。
_@Value("${myValue:#{null}}")
_
Java 8を使用している場合、そのJava.util.Optional
クラス。この方法で変数を宣言するだけです。
@Value("${myValue:#{null}}")
private Optional<String> value;
次に、より適切な方法で値が定義されているかどうかを確認できます。
if (value.isPresent()) {
// do something cool
}
それが役に立てば幸い!