2016-09-02 4 views
0

アノテーション内でプロパティ値を取得する方法を教えてください。たとえば、私は注釈を持っていますアノテーション内のスプリングプロパティ値

@GetMyValue(value1="Val1",intVal=10) 

今、 "Val1"と10をプロパティファイルから取得します。試しました

@GetMyValue(value1="${test.value}",intVal="${test.int.value}") 

これはうまくいきません。

は、私はそれは、注釈内である必要があり、私はそれを望んでいない

@Value("${test.value}") 
String value; 

@Value("${test.int.value}") 
int intValue; 

使用することができます理解しています。助言がありますか?

答えて

0

Spring @Valueでは、プレースホルダの置換は注釈内では行われず、Beanを検査するときにフレームワークによって行われます。

DefaultListableBeanFactory#doResolveDependency

  • DefaultListableBeanFactory#resolveEmbeddedValue
  • org.springframework.util.StringValueResolver
  • ので

    、あなたが "手動"(あなたの注釈の文字列でなければなりません)注釈value1とINTVALを取得する必要があります

    • を参照してください。プロパティーファイルに対してそれらを解決してください。

    0

    このようにする必要がありますが、回避策があるかもしれません。たとえば、@GetMyValueの値をハードコードしないでください。設定ビーンに2つのパラメータを導入するだけです。

    private String stringVal; 
    private int intVal; 
    

    この2つのパラメータは、spELによってアノテーションで使用できます。

    関連する問題