Springの@ValueでDate型の値を設定する方法

こんにちは、さるまりんです。

Spring@ValueアノテーションでDate型の値を設定する方法です。

Stringintbooleanならば

@Value("${my.string.value}")
String myString;

@Value("${my.integer.value}")
int myInteger;

@Value("${my.boolean.value}")
boolean myBoolean;

こんな感じでプロパティファイルから値を設定できます。

これをDate(java.util.Date)でやりたいです。

実現するにはSpring Expression Language (SpEL式)を使います。

変数宣言は次のようになります。

@Value("#{new java.text.SimpleDateFormat(\"${mydate.format}\").parse(\"${mydate.value}\")}")
Date myDate;

mydate.valueで設定された文字列をmydate.formatで設定された書式でSimpleDateFormatを使ってDate型に変換し変数myDateにています。

以下のプロパティファイルを読み込んで、

application.properties

# 日付のフォーマット
mydate.format=yyyyMMdd
# 日付の値 (文字列)
mydate.value=20210308

値を

System.out.println("my date is " + myDate);

で出力すると↓のようになります。

my date is Mon Mar 08 00:00:00 JST 2021

SpEL式、便利ですね〜。

いろんなこと出来そうなので色々トライしてみたいと思います。

読んでくださってありがとうございました。

それではまた。