Spring Boot:在用户输入的特定日期执行作业

时间:2016-05-23 15:12:39

标签: java spring-boot scheduling

我尝试使用spring boot管理计划任务。我想在特定日期(由用户指定)执行我的工作一次。 这是我的工作:

@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();
    }

Scheduled注释有多个选项,例如fixedDelay,fixedRate,initialDelay,cron ......但这些选项都不能接受Date。 那么,我如何动态地在指定的日期执行我的方法(即取决于Date insered)?

Ps:如果用户输入两个或更多日期,该方法可以多次执行..

1 个答案:

答案 0 :(得分:1)

Spring有你可以使用的TaskScheduler抽象:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-scheduler

它有一种方法可以在某个Runnable安排Date的执行:

ScheduledFuture schedule(Runnable task, Date startTime);

可能有点偏离主题:如果JobController是Spring Controller(或RestController),我不会将其自动装入JobScheduler。我会反过来并将JobScheduler注入JobController