2010-12-07 12 views
7

Spring @Scheduled注入遅延時間

@Scheduled(fixedDelay = 6000) 
private void myScheduledMethod(){ 
//do something 
} 

と注釈を付けたいくつかのメソッドがあります。環境固有の値を設定するプロパティファイルもあります。テスト目的のために、遅延の値を構成可能にしたい、理想的にはプロパティファイルのプロパティを使用したいと思います。

fixedDelayの値は定数でなければならないので、私はプロパティファイルからこのセットを取得する方法を探していますが、まだそれを行う方法が見つかりませんでした。

答えて

6

私は同じ問題に捕まってしまったが、今この問題を解決する最良の方法は次のようになります。

@Scheduled(fixedDelayString = "${my.delay.property}") 
public void myScheduledMethod(){ 
    // do something 
} 
5

このオプションを使用するとよいでしょうが、存在しないと思います(注釈はクラスレベルですが、インスタンスが作成されると値が注入されます)。

これを構成可能にするには、xml名前空間<task:を使用します。 spring docsからの例のように:

<task:scheduled-tasks scheduler="myScheduler"> 
    <task:scheduled ref="someObject" method="someMethod" 
     fixed-delay="${configuredDelay}"/> 
</task:scheduled-tasks> 
関連する問題