Spring @Valueのクイックガイド

1.概要

このクイック記事では、 @ Value Springアノテーション** を見ていきます。

このアノテーションは、SpringマネージドBeanのフィールドに値を注入するために使用でき、フィールドまたはコンストラクター/メソッドパラメーターレベルで適用できます。

2.アプリケーションの設定

このアノテーションのさまざまな使い方を説明するために、簡単なSpringアプリケーション設定クラスを設定する必要があります。

そして当然のことながら、 @ Value アノテーションで注入したい値を定義するためには プロパティファイルが必要です 。そのため、最初に設定クラスで @ PropertySource を定義する必要があります - プロパティファイル名を使用します。

プロパティファイルを定義しましょう。

value.from.file=Value got from the file
priority=Properties file
listOfValues=A,B,C

3.使用例

基本的でほとんど役に立たない使用例として、注釈からフィールドに「文字列値」を注入することしかできません。

@Value("string value")
private String stringValue;

@ PropertySource アノテーションを使用すると、 @ Value アノテーションを使用してプロパティファイルの値を操作できます。次の例では、フィールドに割り当てられた “ファイルから取得した値” を取得します。

@Value("${value.from.file}")
private String valueFromFile;

同じ構文でシステムプロパティから値を設定することもできます。

systemValue という名前のシステムプロパティを定義したとしましょう。次のサンプルを見てください。

@Value("${systemValue}")
private String systemValue;

定義されていない可能性があるプロパティーには、デフォルト値を指定できます。

この例では "some default" という値が挿入されます

@Value("${unknown.param:some default}")
private String someDefault;

同じプロパティがシステムプロパティとプロパティファイルに定義されている場合は、システムプロパティが適用されます。

プロパティ priority が値 “ System property” を持つシステムプロパティとして定義されていて、プロパティファイルで別のものとして定義されているとします。次のコードでは、値は “システムプロパティ” になります。

@Value("${priority}")
private String prioritySystemProperty;

時々私達は価値の束を注入する必要があります。プロパティファイル内の単一のプロパティのカンマ区切り値として、またはシステムプロパティとしてそれらを定義し、配列に挿入すると便利です。最初のセクションでは、プロパティファイル __、 listOfValues にカンマ区切り値を定義したので、次の例では、配列の値は ["A"、 "B"、 "C"]になります。

@Value("${listOfValues}")
private String[]valuesArray;

4. SpELを使った高度な例

値を取得するためにSpEL式を使用することもできます。 priority、 という名前のシステムプロパティがある場合、その値は次の例のフィールドに適用されます。

@Value("#{systemProperties['priority']}")
private String spelValue;

システムプロパティを定義していない場合は、 null 値が割り当てられます。これを防ぐために、SpEL式にデフォルト値を指定できます。次の例では、システムプロパティが定義されていない場合、フィールドに "some default" valueを取得します。

@Value("#{systemProperties['unknown']?: 'some default'}")
private String spelSomeDefault;

さらに、他のBeanのフィールド値を使用することもできます。フィールド someValue 10 に等しい someBean という名前のBeanがあるとします。この例では、 10 がフィールドに割り当てられます。

@Value("#{someBean.someValue}")
private Integer someBeanValue;

プロパティを操作して、値のListを取得できます。次のサンプルでは、​​文字列値A、B、およびCのリストを取得します。

@Value("#{'${listOfValues}'.split(',')}")
private List<String> valuesList;

5.まとめ

このクイックチュートリアルでは、ファイルで定義された単純なプロパティ、システムプロパティ、およびSpEL式で計算されたプロパティで @ Value アノテーションを使用するさまざまな可能性を調べました。

いつものようにサンプルアプリケーションはhttps://github.com/eugenp/tutorials/tree/master/spring-core[GitHubプロジェクトで利用可能]です。

前の投稿:Javaでのソート
次の投稿:Spring Data MongoDBトランザクション