Springの@Valueで数値を計算式で設定する方法

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

以前、Springの@ValueアノテーションでDate型の値を設定する方法を書きました。

今回は数値の計算式です。

例えば3日を秒で表したい時

3(日) × 24(時間) × 60(分) × 60(秒)

と計算すると思います。

PHPだと設定で連想配列を使うことが多いと思いますが、その中で

// 有効期限 (秒) = 3日
'expiration' => 3 * 24 * 60 * 60

のように、書くことができます。

これをSpringのプロパティファイルでやりたい。

これを実現するにはDateの時と同じようにSpring Expression Language(SpEL式)を使います。

変数宣言部分は次の通りです。

@Value("#{${expiration}}")
private int expiration;

設定ファイルapplication.propertiesには以下のように記述しています。

# 有効期限 (秒)
expiration=3 * 24 * 60 * 60

設定ファイル内のexpirationで設定された文字列"3 * 24 * 60 * 60"を計算した値259,200が変数expirationに設定されます。

設定された値を

System.out.println("expiration is set to " + expiration + " seconds");

で出力すると↓です。

expiration is set to 259200 seconds

これで設定ファイルが少し読みやすくなるかな。

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

それではまた!