1. 概要

Springの@Valueアノテーションは、プロパティ値をコンポーネントに挿入するための便利な方法を提供します。 プロパティが存在しない可能性がある場合に適切なデフォルトを提供することも非常に便利です。

これが、このチュートリアルで焦点を当てる内容です。 @ValueSpringアノテーションのデフォルト値を指定する方法です。

@Value の詳細なクイックガイドについては、こちらの記事を参照してください。

2. 文字列のデフォルト

Stringプロパティのデフォルト値を設定するための基本的な構文を見てみましょう。

@Value("${some.key:my default value}")
private String stringWithDefaultValue;

some.key を解決できない場合、 stringW ithDefaultValueはデフォルト値mydefaultvalueに設定されます。

同様に、長さゼロのStringをデフォルト値として設定できます。

@Value("${some.key:})"
private String stringWithBlankDefaultValue;

3. プリミティブ

booleanintなどのプリミティブ型のデフォルト値を設定するには、リテラル値を使用します。

@Value("${some.key:true}")
private boolean booleanWithDefaultValue;
@Value("${some.key:42}")
private int intWithDefaultValue;

必要に応じて、タイプをBooleanおよびIntegerに変更することで、代わりにプリミティブラッパーを使用できます。

4. 配列

値のコンマ区切りリストを配列に挿入することもできます。

@Value("${some.key:one,two,three}")
private String[] stringArrayWithDefaults;

@Value("${some.key:1,2,3}")
private int[] intArrayWithDefaults;

上記の最初の例では、値 one two 、およびthreeがデフォルトとしてstringArrayWithDefaultsに挿入されます。

2番目の例では、値 1 2 、および3がデフォルトとしてintArrayWithDefaultsに挿入されます。

5. SpELの使用

Spring Expression Language(SpEL)を使用して、式とデフォルトを指定することもできます。

以下の例では、 some.system.key がシステムプロパティとして設定されていることを想定しており、設定されていない場合は、デフォルトのシステムプロパティ値をデフォルト:

@Value("#{systemProperties['some.key'] ?: 'my default system property value'}")
private String spelWithDefaultValue;

6. 結論

この簡単な記事では、Springの @Value アノテーションを使用して、値を挿入するプロパティのデフォルト値を設定する方法について説明しました。

いつものように、この記事で使用されているすべてのコードサンプルは、GitHubプロジェクトにあります。