春ブーツ:@Scheduledをパラメータ化する方法

ジョセフ・ガニョン:

私は春に新しいですし、それだけで何ができるかの表面に傷が付いています。

私は私が使用して定期的なタスクを設定する必要がある状況持つ@Scheduled注釈を。速度は、タスクを表す方法をカプセル化するクラスに渡されるオブジェクトのメンバフィールドとして指定されています。

私は、設定や環境、例えばにアクセスすることができますメカニズムを使用しました@Scheduled(fixedRateString = "${some.property:default}")これは素晴らしい作品。

私は何をするのか分からないことへのオブジェクトから値を挿入しています@Scheduled

例えば:

class MyClass {
  private MyObject myObj;

  public MyClass(MyObject myObj) {
    this.myObj = myObj;
  }

  @Scheduled(fixedRateString = "${myObj.rate:5000}")
  private void someTask() {
    ...
  }
}

もちろん、動作しない、上記のコードは、私はちょうど私が何をしようとしているの例を与えています。

任意の提案をいただければ幸いです。

Rawb:

残念ながら、春の豆の作成プロセスは、そのようなローカル変数を読むことはありません。

あなたは春TaskSchedulerクラスを使用することができます。

基本的にあなただけの()の実行可能な、新しいCronTrigger(「* * * * *」)あなたは(豆など)スケジュールされたタスクを実行し、taskScheduler.scheduleを実行するために使用するスレッドプールを定義する必要があります。ここでの詳細な例があります:

https://www.baeldung.com/spring-task-scheduler

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=202941&siteId=1