43

最終属性のプロパティファイルからの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; 

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

4

2 に答える 2

41

最終フィールドに値を挿入できる唯一の方法は、コンストラクター注入を使用することです。他のすべては、Spring側のひどいハックになるでしょう。

于 2011-08-20T14:07:09.533 に答える
27

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

public class Test {
    private final String value;

    public Test(@Value("${some.value}") String value){
        this.value=value;
        System.out.println(this.value);
    }
}
于 2017-12-10T20:33:36.790 に答える