2016-05-23 9 views
1

スプリングブートを使用してスケジュールされたタスクを管理しようとしています。特定の日付(ユーザが指定)で自分の仕事を1回だけ実行したい。ここで が私の仕事です:スプリングブート:ユーザーが入力した特定の日付でジョブを実行

@Component 
public class JobScheduler{ 

    @Autowired 
    JobController controller; 
    // Retrieving the Date entered by the user 
    controller.getDateForExecution(); // 2016/05/24 10:00 for example 

    @Scheduled(???) 
    public void performJob() throws Exception { 
     controller.doSomething(); 
    } 

あり、このようなFIXEDDELAY、fixedRate、initialDelayの、cronのようにスケジュール注釈のための複数のオプションがあります...しかし、これらのどれも、日付を受け入れることはできません。 どうすれば、指定したDateで自分のメソッドを動的に(つまり、insuredされた日付によって)実行できますか?

シモンズ:ユーザーが2つの以上の日付を入力する場合、このメソッドを複数回実行することができます。..

答えて

1

春はあなたが使用することができますTaskScheduler抽象化があります。http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-scheduler

それは実行をスケジュールするための方法を持っています

ScheduledFuture schedule(Runnable task, Date startTime); 

少しオフトピックかもしれない:特定のDateRunnableJobControllerは春Controller(またはRestController)である場合には、私はそれをJobSchedulerにautowireしません。私はそれを逆にして、にJobSchedulerを注入します。

関連する問題