こんにちは、さるまりんです。
Spring Frameworkでプロパティから変数に値をセットする仕組みで@Value
アノテーションを使うことができます。
@Value("${プロパティのキー}")
[変数の型] [変数名];
例)
以下のコードでcom.salumarine.myname
のキーの値が変数name
に設定されます。
@Value("${com.salumarine.myname}")
String name;
ただし、キーはあるけれどプロパティが見つからない場合は、設定すべき値がないよとIllegalArgumentException
が発生して怒られます。
そのために次のようにして設定すべき値が見つからない場合のデフォルト値を指定することができます。
@Value("${プロパティーのキー:デフォルト値}")
[変数の型] [変数名];
プロパティのキーの後に:
(コロン)で区切って、デフォルト値です。
@Value("${com.salumarine.myname:salu}")
String name;
上記のコードではcom.salumarine.myname
で値が見つからなくても、name
には"salu"
の文字列がデフォルト値として設定されます。
前置きが長くなりました。では本題です。
null
を設定する場合どうするでしょうか?
@Value("${com.salumarine.myname:null}")
String name;
これではname
にはnull
が設定されるのではなく、"null"
という文字列が設定されてしまいます。
@Valueでnullを設定する
null
を設定したい場合は以下のように書きます。
@Value("${プロパティのキー:#{null}}")
[変数の型] [変数名];
name
の例ですと
@Value("${com.salumarine.myname:#{null}}")
String name;
これでOKです。
設定されてないとエラーとなるのが正しいケースもあると思いますが、デフォルト値を設定できることで便利に使えるケースもあるかなと思います。
この辺りは難しいですね。何か指針があるのかな。また勉強したいと思います。
読んでくださってありがとうございます。
それではまた!