デフォルトでSpring @Valueを使う

Spring @Valueをデフォルトで使用する

1. 概要

Springの@Valueアノテーションは、プロパティ値をコンポーネントに挿入するための便利な方法を提供します。 provide sensible defaults for cases where a property may not be presentにも非常に役立ちます。

これが、この記事で焦点を当てる内容です。@ValueSpringアノテーションのデフォルト値を指定する方法です。 @Valueの詳細なクイックガイドについては、記事hereを参照してください。

2. 文字列のデフォルト

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

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

some.keyを解決できない場合、stringWithDefaultValueはデフォルト値の「my default value”」に設定されます。

同様に、長さゼロの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, and 3がデフォルトとしてintArrayWithDefaultsに挿入されます。

5. SpELを使用する

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

以下の例では、some.system.keyがシステムプロパティとして設定されていることを想定しており、設定されていない場合は、デフォルトとして「my default system property value”」を使用します。

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

6. 結論

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

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