2017-10-14 17 views
0

@Controllerと@Serviceとしてマップされた2つのクラスを持つスプリングブートWebアプリケーションがあるとします。サービスはコントローラのフィールドに注入されます。いくつかの外部データを更新するために1秒に1回タスクを実行するサービスが必要です。このコードに何か問題がありますか?スプリングサービスの定期的なタスク

@Component 
public class MyService implements Runnable{ 
    public MyService() { 
     new Thread(this).start(); 
    } 

    @Override 
    public void run() { 
     while (true) { 
      try { 
       Thread.sleep(1000); 
       // operations here 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+2

あなたはhttps://spring.io/guides/gs/scheduling-tasks/を見ましたか? – jonrsharpe

+0

あなたはそれを行うことができますスプリングクォーツ –

答えて

0

ジョブまたはスプリングタスクスケジューラを使用してタスクを作成する方法はたくさんありますが、以下は簡単な方法の1つです。

以下のタスクは毎秒実行されます。

Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
      System.out.println("hello"); 
     } 
    }, 0, 1000); // o is delay time after which it starts, 1000 is time interval 

それとも、春のタスクスケジューラを実装するためにhereを参照するとよいでしょう。

関連する問題