web-dev-qa-db-ja.com

最終属性@Value-JavaでのSpringプロパティインジェクション

最終属性のプロパティファイルからのSpringインジェクションに関する簡単な質問。

ファイルパスを格納するプロパティファイルがあります。通常、プロパティファイルを使用するときは、次のようにクラス属性を設定します。

private @Value("#{someProps['prop.field']}") String someAttrib ;

それから私のspring.xml私は次のようなものになります:

<util:properties id="someProps"   
    location="classpath:/META-INF/properties/somePropFile.properties" />

これはうまく機能し、シンプルで、コードをすてきに整頓します。しかし、プロパティ値を最終的なクラス属性に挿入しようとするときに使用する最も近いパターンは何ですか?

明らかに次のようなもの:

private static final @Value("#{fileProps['dict.english']}") String DICT_PATH; 

動作しないでしょう。別の方法はありますか?

乾杯!

36
NightWolf

最終フィールドに値を挿入できる唯一の方法は、 Constructor Injection を使用することです。それ以外はすべて、Spring側でのひどいハックになります。

35

あなたが例を探しているなら、これは1つです:

public class Test {
    private final String value;

    public Test(@Value("${some.value}") String value){
        this.value=value;
        System.out.println(this.value);
    }
}
13
Austin Poole